summaryrefslogtreecommitdiff
path: root/libjava/include
diff options
context:
space:
mode:
authorupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
committerupstream source tree <ports@midipix.org>2015-03-15 20:14:05 -0400
commit554fd8c5195424bdbcabf5de30fdc183aba391bd (patch)
tree976dc5ab7fddf506dadce60ae936f43f58787092 /libjava/include
downloadcbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.bz2
cbb-gcc-4.6.4-554fd8c5195424bdbcabf5de30fdc183aba391bd.tar.xz
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository.
Diffstat (limited to 'libjava/include')
-rw-r--r--libjava/include/Makefile.am15
-rw-r--r--libjava/include/Makefile.in598
-rw-r--r--libjava/include/aix-signal.h50
-rw-r--r--libjava/include/boehm-gc.h98
-rw-r--r--libjava/include/config.h.in479
-rw-r--r--libjava/include/darwin-signal.h51
-rw-r--r--libjava/include/default-signal.h51
-rw-r--r--libjava/include/dwarf2-signal.h196
-rw-r--r--libjava/include/execution.h276
-rw-r--r--libjava/include/hppa-signal.h49
-rw-r--r--libjava/include/i386-signal.h167
-rw-r--r--libjava/include/java-assert.h38
-rw-r--r--libjava/include/java-chardecomp.h3510
-rw-r--r--libjava/include/java-chartables.h1617
-rw-r--r--libjava/include/java-cpool.h134
-rw-r--r--libjava/include/java-insns.h248
-rw-r--r--libjava/include/java-interp.h588
-rw-r--r--libjava/include/java-props.h33
-rw-r--r--libjava/include/java-stack.h177
-rw-r--r--libjava/include/jni_md.h151
-rw-r--r--libjava/include/jvm.h804
-rw-r--r--libjava/include/jvmpi.h227
-rw-r--r--libjava/include/jvmti-int.h94
-rw-r--r--libjava/include/jvmti_md.h66
-rw-r--r--libjava/include/mips-signal.h49
-rw-r--r--libjava/include/no-gc.h23
-rw-r--r--libjava/include/no-threads.h162
-rw-r--r--libjava/include/pa-signal.h49
-rw-r--r--libjava/include/posix-threads.h384
-rw-r--r--libjava/include/posix.h207
-rw-r--r--libjava/include/powerpc-signal.h113
-rw-r--r--libjava/include/s390-signal.h288
-rw-r--r--libjava/include/sh-signal.h75
-rw-r--r--libjava/include/solaris-signal.h48
-rw-r--r--libjava/include/stamp-h.in1
-rw-r--r--libjava/include/win32-signal.h40
-rw-r--r--libjava/include/win32-threads.h232
-rw-r--r--libjava/include/win32.h188
-rw-r--r--libjava/include/x86_64-signal.h181
39 files changed, 11757 insertions, 0 deletions
diff --git a/libjava/include/Makefile.am b/libjava/include/Makefile.am
new file mode 100644
index 000000000..696a516e7
--- /dev/null
+++ b/libjava/include/Makefile.am
@@ -0,0 +1,15 @@
+## Process this file with automake to produce Makefile.in.
+
+AUTOMAKE_OPTIONS = foreign
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+
+tool_include_dir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include
+## The 'jni.h' here is fairly hacky, but it is simpler than trying to
+## tell Classpath about our peculiar install directory.
+tool_include__HEADERS = jni_md.h ../classpath/include/jawt.h \
+ ../classpath/include/jawt_md.h jvmpi.h ../classpath/include/jni.h
diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in
new file mode 100644
index 000000000..1796971d1
--- /dev/null
+++ b/libjava/include/Makefile.in
@@ -0,0 +1,598 @@
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = include
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(srcdir)/config.h.in $(tool_include__HEADERS)
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/libltdl/acinclude.m4 \
+ $(top_srcdir)/../config/acx.m4 \
+ $(top_srcdir)/../config/depstand.m4 \
+ $(top_srcdir)/../config/enable.m4 \
+ $(top_srcdir)/../config/gxx-include-dir.m4 \
+ $(top_srcdir)/../config/iconv.m4 \
+ $(top_srcdir)/../config/lcmessage.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
+ $(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/lib-link.m4 \
+ $(top_srcdir)/../config/lib-prefix.m4 \
+ $(top_srcdir)/../config/lthostflags.m4 \
+ $(top_srcdir)/../config/multi.m4 \
+ $(top_srcdir)/../config/no-executables.m4 \
+ $(top_srcdir)/../config/override.m4 \
+ $(top_srcdir)/../config/tls.m4 \
+ $(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltgcc.m4 \
+ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \
+ $(top_srcdir)/../ltversion.m4 $(top_srcdir)/../lt~obsolete.m4 \
+ $(top_srcdir)/mingwld.m4 $(top_srcdir)/pkg.m4 \
+ $(top_srcdir)/shlibpath.m4 $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+CONFIG_HEADER = config.h $(top_builddir)/gcj/libgcj-config.h
+CONFIG_CLEAN_FILES = platform.h java-gc.h java-threads.h java-signal.h \
+ java-signal-aux.h
+CONFIG_CLEAN_VPATH_FILES =
+SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__installdirs = "$(DESTDIR)$(tool_include_dir)"
+HEADERS = $(tool_include__HEADERS)
+ETAGS = etags
+CTAGS = ctags
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+ANTLR_JAR = @ANTLR_JAR@
+AR = @AR@
+AS = @AS@
+ATOMICSPEC = @ATOMICSPEC@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BACKTRACESPEC = @BACKTRACESPEC@
+BUILD_VERSION = @BUILD_VERSION@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CHECKREFSPEC = @CHECKREFSPEC@
+CLASSPATH_SEPARATOR = @CLASSPATH_SEPARATOR@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CPU = @CPU@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DIRLTDL = @DIRLTDL@
+DIVIDESPEC = @DIVIDESPEC@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+ECJ_BUILD_JAR = @ECJ_BUILD_JAR@
+ECJ_JAR = @ECJ_JAR@
+EGREP = @EGREP@
+EXCEPTIONSPEC = @EXCEPTIONSPEC@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GCC_FOR_ECJX = @GCC_FOR_ECJX@
+GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@
+GCDEPS = @GCDEPS@
+GCINCS = @GCINCS@
+GCJ = @GCJ@
+GCJDEPMODE = @GCJDEPMODE@
+GCJFLAGS = @GCJFLAGS@
+GCJH = @GCJH@
+GCJVERSION = @GCJVERSION@
+GCJ_BIN_DIR = @GCJ_BIN_DIR@
+GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
+GCLIBS = @GCLIBS@
+GCSPEC = @GCSPEC@
+GCTESTSPEC = @GCTESTSPEC@
+GLIB_CFLAGS = @GLIB_CFLAGS@
+GLIB_LIBS = @GLIB_LIBS@
+GREP = @GREP@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+HASH_SYNC_SPEC = @HASH_SYNC_SPEC@
+IEEESPEC = @IEEESPEC@
+INCLTDL = @INCLTDL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTERPRETER = @INTERPRETER@
+JAR = @JAR@
+JAVA_HOME = @JAVA_HOME@
+JAVA_VERSION = @JAVA_VERSION@
+JC1GCSPEC = @JC1GCSPEC@
+JRE_BIN_DIR = @JRE_BIN_DIR@
+JRE_DIR = @JRE_DIR@
+JRE_LIB_DIR = @JRE_LIB_DIR@
+JRE_LNK = @JRE_LNK@
+JVM_JAR_DIR = @JVM_JAR_DIR@
+JVM_JAR_ROOT_DIR = @JVM_JAR_ROOT_DIR@
+JVM_ROOT_DIR = @JVM_ROOT_DIR@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LDLIBICONV = @LDLIBICONV@
+LD_FINISH_STATIC_SPEC = @LD_FINISH_STATIC_SPEC@
+LD_START_STATIC_SPEC = @LD_START_STATIC_SPEC@
+LIBART_CFLAGS = @LIBART_CFLAGS@
+LIBART_LIBS = @LIBART_LIBS@
+LIBDIR = @LIBDIR@
+LIBFFI = @LIBFFI@
+LIBFFIINCS = @LIBFFIINCS@
+LIBGCJDEBUG = @LIBGCJDEBUG@
+LIBGCJTESTSPEC = @LIBGCJTESTSPEC@
+LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@
+LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
+LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
+LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
+LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@
+LIBGCJ_LD_SYMBOLIC_FUNCTIONS = @LIBGCJ_LD_SYMBOLIC_FUNCTIONS@
+LIBGCJ_SPEC = @LIBGCJ_SPEC@
+LIBGCJ_SUBLIB_CORE_EXTRA_DEPS = @LIBGCJ_SUBLIB_CORE_EXTRA_DEPS@
+LIBGCJ_SUBLIB_LTFLAGS = @LIBGCJ_SUBLIB_LTFLAGS@
+LIBICONV = @LIBICONV@
+LIBLTDL = @LIBLTDL@
+LIBMATHSPEC = @LIBMATHSPEC@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKE = @MAKE@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
+PKG_CONFIG = @PKG_CONFIG@
+PLATFORM = @PLATFORM@
+RANLIB = @RANLIB@
+SDK_BIN_DIR = @SDK_BIN_DIR@
+SDK_INCLUDE_DIR = @SDK_INCLUDE_DIR@
+SDK_LIB_DIR = @SDK_LIB_DIR@
+SDK_LNK = @SDK_LNK@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+SYSDEP_SOURCES = @SYSDEP_SOURCES@
+SYSTEMSPEC = @SYSTEMSPEC@
+SYS_ZLIBS = @SYS_ZLIBS@
+THREADCXXFLAGS = @THREADCXXFLAGS@
+THREADDEPS = @THREADDEPS@
+THREADINCS = @THREADINCS@
+THREADLDFLAGS = @THREADLDFLAGS@
+THREADLIBS = @THREADLIBS@
+THREADSPEC = @THREADSPEC@
+THREADSTARTFILESPEC = @THREADSTARTFILESPEC@
+TOOLKIT = @TOOLKIT@
+UNZIP = @UNZIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+X_CFLAGS = @X_CFLAGS@
+X_EXTRA_LIBS = @X_EXTRA_LIBS@
+X_LIBS = @X_LIBS@
+X_PRE_LIBS = @X_PRE_LIBS@
+ZINCS = @ZINCS@
+ZIP = @ZIP@
+ZLIBS = @ZLIBS@
+ZLIBSPEC = @ZLIBSPEC@
+ZLIBTESTSPEC = @ZLIBTESTSPEC@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ac_ct_GCJ = @ac_ct_GCJ@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_libsubdir = @build_libsubdir@
+build_os = @build_os@
+build_subdir = @build_subdir@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+dbexecdir = @dbexecdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+extra_ldflags = @extra_ldflags@
+extra_ldflags_libjava = @extra_ldflags_libjava@
+gcc_suffix = @gcc_suffix@
+gcjsubdir = @gcjsubdir@
+gxx_include_dir = @gxx_include_dir@
+here = @here@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_exeext = @host_exeext@
+host_os = @host_os@
+host_subdir = @host_subdir@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+libstdcxx_incdir = @libstdcxx_incdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_host_flags = @lt_host_flags@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+mkinstalldirs = @mkinstalldirs@
+multi_basedir = @multi_basedir@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+python_mod_dir = @python_mod_dir@
+python_mod_dir_expanded = @python_mod_dir_expanded@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+subdirs = @subdirs@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+
+# autoconf2.13's target_alias
+target_noncanonical = @target_noncanonical@
+target_os = @target_os@
+target_subdir = @target_subdir@
+target_vendor = @target_vendor@
+toolexecdir = @toolexecdir@
+toolexeclibdir = @toolexeclibdir@
+toolexecmainlibdir = @toolexecmainlibdir@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = foreign
+
+# May be used by various substitution variables.
+gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
+tool_include_dir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include
+tool_include__HEADERS = jni_md.h ../classpath/include/jawt.h \
+ ../classpath/include/jawt_md.h jvmpi.h ../classpath/include/jni.h
+
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign include/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status include/config.h
+$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-tool_include_HEADERS: $(tool_include__HEADERS)
+ @$(NORMAL_INSTALL)
+ test -z "$(tool_include_dir)" || $(MKDIR_P) "$(DESTDIR)$(tool_include_dir)"
+ @list='$(tool_include__HEADERS)'; test -n "$(tool_include_dir)" || list=; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(tool_include_dir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(tool_include_dir)" || exit $$?; \
+ done
+
+uninstall-tool_include_HEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(tool_include__HEADERS)'; test -n "$(tool_include_dir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ test -n "$$files" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(tool_include_dir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(tool_include_dir)" && rm -f $$files
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ set x; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+check-am: all-am
+check: check-am
+all-am: Makefile $(HEADERS) config.h
+installdirs:
+ for dir in "$(DESTDIR)$(tool_include_dir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am: install-tool_include_HEADERS
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-tool_include_HEADERS
+
+.MAKE: all install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
+ clean-libtool ctags distclean distclean-generic distclean-hdr \
+ distclean-libtool distclean-tags dvi dvi-am html html-am info \
+ info-am install install-am install-data install-data-am \
+ install-dvi install-dvi-am install-exec install-exec-am \
+ install-html install-html-am install-info install-info-am \
+ install-man install-pdf install-pdf-am install-ps \
+ install-ps-am install-strip install-tool_include_HEADERS \
+ installcheck installcheck-am installdirs maintainer-clean \
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-tool_include_HEADERS
+
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/libjava/include/aix-signal.h b/libjava/include/aix-signal.h
new file mode 100644
index 000000000..abf372292
--- /dev/null
+++ b/libjava/include/aix-signal.h
@@ -0,0 +1,50 @@
+/* aix-signal.h - Catch runtime signals and turn them into exceptions,
+ on a Darwin system. */
+
+/* Copyright (C) 2008 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+/* This file is really more of a specification. The rest of the system
+ should be arranged so that this Just Works. */
+
+#ifndef JAVA_SIGNAL_H
+# define JAVA_SIGNAL_H 1
+
+#include <sys/types.h>
+#include <sys/signal.h>
+
+typedef void (* SIG_PF)(int);
+
+# define HANDLE_SEGV 1
+# undef HANDLE_FPE
+
+# define SIGNAL_HANDLER(_name) \
+ static void _name (int _dummy __attribute__ ((unused)))
+
+# define MAKE_THROW_FRAME(_exception)
+
+# define INIT_SEGV \
+ do { \
+ struct sigaction sa; \
+ sa.sa_handler = catch_segv; \
+ sigemptyset (&sa.sa_mask); \
+ sa.sa_flags = SA_NODEFER; \
+ sigaction (SIGBUS, &sa, NULL); \
+ sigaction (SIGSEGV, &sa, NULL); \
+ } while (0)
+
+# define INIT_FPE \
+ do { \
+ struct sigaction sa; \
+ sa.sa_handler = catch_fpe; \
+ sigemptyset (&sa.sa_mask); \
+ sa.sa_flags = SA_NODEFER; \
+ sigaction (SIGFPE, &sa, NULL); \
+ } while (0)
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/boehm-gc.h b/libjava/include/boehm-gc.h
new file mode 100644
index 000000000..ed8ac6aa2
--- /dev/null
+++ b/libjava/include/boehm-gc.h
@@ -0,0 +1,98 @@
+// -*- c++ -*-
+// boehm-gc.h - Defines for Boehm collector.
+
+/* Copyright (C) 1998, 1999, 2002, 2004, 2006, 2007 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JV_BOEHM_GC__
+#define __JV_BOEHM_GC__
+
+#define JV_MARKOBJ_DECL void *::_Jv_MarkObj (void *, void *, void *, void *)
+#define JV_MARKARRAY_DECL void *::_Jv_MarkArray (void *, void *, void *, void *)
+
+extern "C"
+{
+ void *_Jv_MarkObj (void *, void *, void *, void *);
+ void *_Jv_MarkArray (void *, void *, void *, void *);
+ void _Jv_RegisterLibForGc (const void *);
+}
+
+// Enough stuff to inline _Jv_AllocObj. Ugly.
+#include <gcj/javaprims.h>
+#include <java/lang/Class.h>
+#include <string.h>
+
+#include <gc_ext_config.h> // for THREAD_LOCAL_ALLOC
+
+extern "C" void * GC_gcj_malloc(size_t, void *);
+extern "C" void * GC_malloc_atomic(size_t);
+#ifdef THREAD_LOCAL_ALLOC
+extern "C" void * GC_local_gcj_malloc(size_t, void *);
+extern "C" void * GC_local_malloc_atomic(size_t);
+#endif
+
+#ifndef LIBGCJ_GC_DEBUG
+
+inline void *
+_Jv_AllocObj (jsize size, jclass klass)
+{
+ // This should call GC_GCJ_MALLOC, but that would involve
+ // including gc.h.
+#ifdef THREAD_LOCAL_ALLOC
+ return GC_local_gcj_malloc (size, klass->vtable);
+#else
+ return GC_gcj_malloc (size, klass->vtable);
+#endif
+}
+
+inline void *
+_Jv_AllocPtrFreeObj (jsize size, jclass klass)
+{
+#ifdef JV_HASH_SYNCHRONIZATION
+# ifdef THREAD_LOCAL_ALLOC
+ void * obj = GC_local_malloc_atomic(size);
+# else
+ void * obj = GC_malloc_atomic(size);
+# endif
+ *((_Jv_VTable **) obj) = klass->vtable;
+#else
+# ifdef THREAD_LOCAL_ALLOC
+ void * obj = GC_local_gcj_malloc(size, klass->vtable);
+# else
+ void * obj = GC_gcj_malloc(size, klass->vtable);
+# endif
+#endif
+ return obj;
+}
+
+#else /* LIBGCJ_GC_DEBUG */
+
+void *
+_Jv_AllocObj (jsize size, jclass klass);
+
+void *
+_Jv_AllocPtrFreeObj (jsize size, jclass klass);
+
+#endif /* LIBGCJ_GC_DEBUG */
+
+void _Jv_GCAttachThread ();
+
+void _Jv_GCDetachThread ();
+
+// _Jv_AllocBytes (jsize size) should go here, too. But clients don't
+// usually include this header.
+
+// Suspend the given thread. This includes suspending the calling thread.
+extern "C" void _Jv_SuspendThread (_Jv_Thread_t *);
+
+// Resume a suspended thread.
+extern "C" void _Jv_ResumeThread (_Jv_Thread_t *);
+
+// Is the given thread suspended?
+extern "C" int _Jv_IsThreadSuspended (_Jv_Thread_t *);
+#endif /* __JV_BOEHM_GC__ */
diff --git a/libjava/include/config.h.in b/libjava/include/config.h.in
new file mode 100644
index 000000000..ce6b748c5
--- /dev/null
+++ b/libjava/include/config.h.in
@@ -0,0 +1,479 @@
+/* include/config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define if building universal (internal helper macro) */
+#undef AC_APPLE_UNIVERSAL_BUILD
+
+/* Name of default AWT toolkit */
+#undef AWT_TOOLKIT
+
+/* Define if system properties shouldn't be read from
+ getenv("GCJ_PROPERTIES"). */
+#undef DISABLE_GETENV_PROPERTIES
+
+/* Define if java.net native functions should be stubbed out. */
+#undef DISABLE_JAVA_NET
+
+/* Define if we should ignore arguments to main(). */
+#undef DISABLE_MAIN_ARGS
+
+/* Define if you're running eCos. */
+#undef ECOS
+
+/* Define if you are using JVMPI. */
+#undef ENABLE_JVMPI
+
+/* Short GCJ version ID */
+#undef GCJVERSION
+
+/* Define if gethostbyaddr_r returns 'int'. */
+#undef GETHOSTBYADDR_R_RETURNS_INT
+
+/* Define if gethostbyname_r returns 'int'. */
+#undef GETHOSTBYNAME_R_RETURNS_INT
+
+/* Define to 1 if you have the `access' function. */
+#undef HAVE_ACCESS
+
+/* Define to 1 if you have the <arpa/inet.h> header file. */
+#undef HAVE_ARPA_INET_H
+
+/* Define if Boehm GC in use. */
+#undef HAVE_BOEHM_GC
+
+/* Define if you have u_int32_t */
+#undef HAVE_BSD_INT32_DEFINED
+
+/* Define to 1 if you have the <bstring.h> header file. */
+#undef HAVE_BSTRING_H
+
+/* Define to 1 if the target assembler supports thread-local storage. */
+#undef HAVE_CC_TLS
+
+/* Define to 1 if you have the `chmod' function. */
+#undef HAVE_CHMOD
+
+/* Define if you have clock_gettime() */
+#undef HAVE_CLOCK_GETTIME
+
+/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't.
+ */
+#undef HAVE_DECL_TZNAME
+
+/* Define to 1 if you have the <dirent.h> header file. */
+#undef HAVE_DIRENT_H
+
+/* Define if you have dladdr() */
+#undef HAVE_DLADDR
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#undef HAVE_DLFCN_H
+
+/* Define if dlopen is available */
+#undef HAVE_DLOPEN
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#undef HAVE_FCNTL_H
+
+/* Define to 1 if you have the `fstat' function. */
+#undef HAVE_FSTAT
+
+/* Define to 1 if you have the `fsync' function. */
+#undef HAVE_FSYNC
+
+/* Define to 1 if you have the `ftime' function. */
+#undef HAVE_FTIME
+
+/* Define to 1 if you have the `ftruncate' function. */
+#undef HAVE_FTRUNCATE
+
+/* Define to 1 if you have the `getcwd' function. */
+#undef HAVE_GETCWD
+
+/* Define if you have the 'gethostbyaddr_r' function. */
+#undef HAVE_GETHOSTBYADDR_R
+
+/* Define if you have the 'gethostbyname_r' function. */
+#undef HAVE_GETHOSTBYNAME_R
+
+/* Define if you have the 'gethostname' function. */
+#undef HAVE_GETHOSTNAME
+
+/* Define if gethostname is declared in <unistd.h>. */
+#undef HAVE_GETHOSTNAME_DECL
+
+/* Define to 1 if you have the `getifaddrs' function. */
+#undef HAVE_GETIFADDRS
+
+/* Define if _Unwind_GetIPInfo is available. */
+#undef HAVE_GETIPINFO
+
+/* Define to 1 if you have the `getpwuid_r' function. */
+#undef HAVE_GETPWUID_R
+
+/* Define to 1 if you have the `getrlimit' function. */
+#undef HAVE_GETRLIMIT
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#undef HAVE_GETTIMEOFDAY
+
+/* Define if you have the 'gmtime_r' function */
+#undef HAVE_GMTIME_R
+
+/* Define if you have the iconv() function. */
+#undef HAVE_ICONV
+
+/* Define to 1 if you have the <ifaddrs.h> header file. */
+#undef HAVE_IFADDRS_H
+
+/* Define if inet6 structures are defined in netinet/in.h. */
+#undef HAVE_INET6
+
+/* Define to 1 if you have the `inet_addr' function. */
+#undef HAVE_INET_ADDR
+
+/* Define to 1 if you have the `inet_aton' function. */
+#undef HAVE_INET_ATON
+
+/* Define to 1 if you have the `inet_ntoa' function. */
+#undef HAVE_INET_NTOA
+
+/* Define to 1 if you have the `inet_pton' function. */
+#undef HAVE_INET_PTON
+
+/* Define if you have int32_t and uint32_t. */
+#undef HAVE_INT32_DEFINED
+
+/* Define if <inttypes.h> is available */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if 'in_addr_t' is defined in sys/types.h or netinet/in.h. */
+#undef HAVE_IN_ADDR_T
+
+/* Define to 1 if you have the <langinfo.h> header file. */
+#undef HAVE_LANGINFO_H
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#undef HAVE_LC_MESSAGES
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define is you have 'localtime' in <time.h> */
+#undef HAVE_LOCALTIME
+
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
+/* Define to 1 if you have the `lstat' function. */
+#undef HAVE_LSTAT
+
+/* Define to 1 if you have the <magic.h> header file. */
+#undef HAVE_MAGIC_H
+
+/* Define if magic.h declares magic_t */
+#undef HAVE_MAGIC_T
+
+/* Define to 1 if you have the `memcpy' function. */
+#undef HAVE_MEMCPY
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mkdir' function. */
+#undef HAVE_MKDIR
+
+/* Define to 1 if you have the `mmap' function. */
+#undef HAVE_MMAP
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#undef HAVE_NETDB_H
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#undef HAVE_NETINET_IN_H
+
+/* Define to 1 if you have the <net/if.h> header file. */
+#undef HAVE_NET_IF_H
+
+/* Define to 1 if you have the `nl_langinfo' function. */
+#undef HAVE_NL_LANGINFO
+
+/* Define to 1 if you have the `open' function. */
+#undef HAVE_OPEN
+
+/* Define to 1 if you have the `opendir' function. */
+#undef HAVE_OPENDIR
+
+/* Define if you have /proc/self/exe */
+#undef HAVE_PROC_SELF_EXE
+
+/* Define if you have /proc/self/maps */
+#undef HAVE_PROC_SELF_MAPS
+
+/* Define if using POSIX threads that have the mutexattr functions. */
+#undef HAVE_PTHREAD_MUTEXATTR_INIT
+
+/* Define to 1 if you have the <pwd.h> header file. */
+#undef HAVE_PWD_H
+
+/* Define to 1 if you have the `readlink' function. */
+#undef HAVE_READLINK
+
+/* Define to 1 if you have the `rename' function. */
+#undef HAVE_RENAME
+
+/* Define to 1 if you have the `rmdir' function. */
+#undef HAVE_RMDIR
+
+/* Define to 1 if you have the `sched_yield' function. */
+#undef HAVE_SCHED_YIELD
+
+/* Define to 1 if you have the `select' function. */
+#undef HAVE_SELECT
+
+/* Define to 1 if you have the `setlocale' function. */
+#undef HAVE_SETLOCALE
+
+/* Define to 1 if you have the `sigaction' function. */
+#undef HAVE_SIGACTION
+
+/* Define to 1 if you have the `sleep' function. */
+#undef HAVE_SLEEP
+
+/* Define it socklen_t typedef is in sys/socket.h. */
+#undef HAVE_SOCKLEN_T
+
+/* Define to 1 if you have the `stat' function. */
+#undef HAVE_STAT
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strerror_r' function. */
+#undef HAVE_STRERROR_R
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define if struct hostent_data is defined in netdb.h */
+#undef HAVE_STRUCT_HOSTENT_DATA
+
+/* Define if struct ipv6_mreq is defined in netinet/in.h. */
+#undef HAVE_STRUCT_IPV6_MREQ
+
+/* Define if struct ip_mreq is defined in netinet/in.h. */
+#undef HAVE_STRUCT_IP_MREQ
+
+/* Define to 1 if `struct tm' is a member of `tm_zone'. */
+#undef HAVE_STRUCT_TM_TM_ZONE
+
+/* Define to 1 if you have the <sys/config.h> header file. */
+#undef HAVE_SYS_CONFIG_H
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+#undef HAVE_SYS_FILIO_H
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#undef HAVE_SYS_IOCTL_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#undef HAVE_SYS_RESOURCE_H
+
+/* Define to 1 if you have the <sys/rw_lock.h> header file. */
+#undef HAVE_SYS_RW_LOCK_H
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#undef HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#undef HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the `time' function. */
+#undef HAVE_TIME
+
+/* Define if global 'timezone' exists. */
+#undef HAVE_TIMEZONE
+
+/* Define to 1 if the target supports thread-local storage. */
+#undef HAVE_TLS
+
+/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
+ `HAVE_STRUCT_TM_TM_ZONE' instead. */
+#undef HAVE_TM_ZONE
+
+/* Define to 1 if you don't have `tm_zone' but do have the external array
+ `tzname'. */
+#undef HAVE_TZNAME
+
+/* Define to 1 if you have the `uname' function. */
+#undef HAVE_UNAME
+
+/* Define if your platform has the global _timezone variable. */
+#undef HAVE_UNDERSCORE_TIMEZONE
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if you have the `unlink' function. */
+#undef HAVE_UNLINK
+
+/* Define to 1 if you have the `usleep' function. */
+#undef HAVE_USLEEP
+
+/* Define if usleep is declared in <unistd.h>. */
+#undef HAVE_USLEEP_DECL
+
+/* Define to 1 if you have the `utime' function. */
+#undef HAVE_UTIME
+
+/* Define to 1 if you have the file `/proc/self/exe'. */
+#undef HAVE__PROC_SELF_EXE
+
+/* Define to 1 if you have the file `/proc/self/maps'. */
+#undef HAVE__PROC_SELF_MAPS
+
+/* Define as const if the declaration of iconv() needs const. */
+#undef ICONV_CONST
+
+/* Define if you want a bytecode interpreter. */
+#undef INTERPRETER
+
+/* API compatibility version string */
+#undef JV_API_VERSION
+
+/* Define if hash synchronization is in use */
+#undef JV_HASH_SYNCHRONIZATION
+
+/* Define if <inttypes.h> is available */
+#undef JV_HAVE_INTTYPES_H
+
+/* Indicate that linker is not able to 8-byte align static data */
+#undef JV_LINKER_CANNOT_8BYTE_ALIGN_STATICS
+
+/* Compatibility version string */
+#undef JV_VERSION
+
+/* Define if we want to use debug calls into the garbage collector. */
+#undef LIBGCJ_GC_DEBUG
+
+/* Installation prefix */
+#undef LIBGCJ_PREFIX
+
+/* Define if using POSIX threads on Linux. */
+#undef LINUX_THREADS
+
+/* Define to the name of the environment variable that determines the dynamic
+ library search path. */
+#undef LTDL_SHLIBPATH_VAR
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#undef LT_OBJDIR
+
+/* Define if MinGW libgcj uses the Windows UNICODE OS API. */
+#undef MINGW_LIBGCJ_UNICODE
+
+/* Define if getuid() and friends are missing. */
+#undef NO_GETUID
+
+/* Define to 1 if your C compiler doesn't accept -c and -o together. */
+#undef NO_MINUS_C_MINUS_O
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define if pthread_mutex_t has m_count member. */
+#undef PTHREAD_MUTEX_HAVE_M_COUNT
+
+/* Define if pthread_mutex_t has __m_count member. */
+#undef PTHREAD_MUTEX_HAVE___M_COUNT
+
+/* The size of `void *', as computed by sizeof. */
+#undef SIZEOF_VOID_P
+
+/* Define if the compiler is configured for setjmp/longjmp exceptions. */
+#undef SJLJ_EXCEPTIONS
+
+/* Define if if the synchronization code should try to avoid pthread_self
+ calls by caching thread IDs in a hashtable. */
+#undef SLOW_PTHREAD_SELF
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define if struct tm has tm_gmtoff field. */
+#undef STRUCT_TM_HAS_GMTOFF
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+#undef TM_IN_SYS_TIME
+
+/* Define if we're to use libffi. */
+#undef USE_LIBFFI
+
+/* Define if libltdl is in use. */
+#undef USE_LTDL
+
+/* Version number of package */
+#undef VERSION
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+ significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+# define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+# undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Define to 1 if the X Window System is missing or not being used. */
+#undef X_DISPLAY_MISSING
+
+/* Required define if using POSIX threads */
+#undef _POSIX_PTHREAD_SEMANTICS
+
+/* Required define if using POSIX threads */
+#undef _REENTRANT
+
+/* Define this if you want runtime debugging enabled. */
+#undef __GCJ_DEBUG
+
+/* Define to `int' if <sys/types.h> does not define. */
+#undef ssize_t
diff --git a/libjava/include/darwin-signal.h b/libjava/include/darwin-signal.h
new file mode 100644
index 000000000..5003e211c
--- /dev/null
+++ b/libjava/include/darwin-signal.h
@@ -0,0 +1,51 @@
+/* darwin-signal.h - Catch runtime signals and turn them into exceptions,
+ on a Darwin system. */
+
+/* Copyright (C) 2004 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+/* This file is really more of a specification. The rest of the system
+ should be arranged so that this Just Works. */
+
+#ifndef JAVA_SIGNAL_H
+# define JAVA_SIGNAL_H 1
+
+#include <sys/types.h>
+#include <stdio.h>
+#include <signal.h>
+
+typedef void (* SIG_PF)(int);
+
+# define HANDLE_SEGV 1
+# undef HANDLE_FPE
+
+# define SIGNAL_HANDLER(_name) \
+ static void _name (int _dummy __attribute__ ((unused)))
+
+# define MAKE_THROW_FRAME(_exception)
+
+# define INIT_SEGV \
+ do { \
+ struct sigaction sa; \
+ sa.sa_handler = catch_segv; \
+ sigemptyset (&sa.sa_mask); \
+ sa.sa_flags = SA_NODEFER; \
+ sigaction (SIGBUS, &sa, NULL); \
+ sigaction (SIGSEGV, &sa, NULL); \
+ } while (0)
+
+# define INIT_FPE \
+ do { \
+ struct sigaction sa; \
+ sa.sa_handler = catch_fpe; \
+ sigemptyset (&sa.sa_mask); \
+ sa.sa_flags = SA_NODEFER; \
+ sigaction (SIGFPE, &sa, NULL); \
+ } while (0)
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/default-signal.h b/libjava/include/default-signal.h
new file mode 100644
index 000000000..6aea73468
--- /dev/null
+++ b/libjava/include/default-signal.h
@@ -0,0 +1,51 @@
+// default-signal.h - Catch runtime signals and turn them into exceptions.
+
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#ifdef SJLJ_EXCEPTIONS
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#include <signal.h>
+
+#define SIGNAL_HANDLER(_name) \
+static void _name (int _dummy __attribute__ ((__unused__)))
+
+#define INIT_SEGV \
+do \
+ { \
+ signal (SIGSEGV, catch_segv); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ signal (SIGFPE, catch_fpe); \
+ } \
+while (0)
+
+#define MAKE_THROW_FRAME(_exception) do {} while (0)
+
+#else /* SJLJ_EXCEPTIONS */
+
+#undef HANDLE_SEGV
+#undef HANDLE_FPE
+
+#define INIT_SEGV do {} while (0)
+#define INIT_FPE do {} while (0)
+
+#endif /* SJLJ_EXCEPTIONS */
+
+#endif /* JAVA_SIGNAL_H */
+
diff --git a/libjava/include/dwarf2-signal.h b/libjava/include/dwarf2-signal.h
new file mode 100644
index 000000000..812968217
--- /dev/null
+++ b/libjava/include/dwarf2-signal.h
@@ -0,0 +1,196 @@
+// dwarf2-signal.h - Catch runtime signals and turn them into exceptions.
+
+/* Copyright (C) 2000, 2001, 2009 Free Software Foundation
+
+ This file is part of libgcj.
+
+ Use this file for a target for which the dwarf2 unwinder in libgcc
+ can unwind through signal handlers.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+#include <sys/syscall.h>
+
+#define HANDLE_SEGV 1
+#undef HANDLE_FPE
+
+#define SIGNAL_HANDLER(_name) \
+static void _Jv_##_name (int, siginfo_t *_sip, void *_p)
+
+class java::lang::Throwable;
+
+// Unwind the stack to the point at which the signal was generated and
+// then throw an exception. With the dwarf2 unwinder we don't usually
+// need to do anything, with some minor exceptions.
+
+#ifdef __ia64__
+
+#define MAKE_THROW_FRAME(_exception) \
+do \
+{ \
+ /* IA-64 either leaves PC pointing at a faulting instruction or the \
+ following instruction, depending on the signal. SEGV always does \
+ the former, so we adjust the saved PC to point to the following \
+ instruction; this is what the handler in libgcc expects. */ \
+ /* Note that we are lying to the unwinder here, which expects the \
+ faulting pc, not pc+1. But we claim the unwind information can't \
+ be changed by such a ld or st instruction, so it doesn't matter. */ \
+ struct sigcontext *_sc = (struct sigcontext *)_p; \
+ _sc->sc_ip++; \
+} \
+while (0)
+
+#else
+#define MAKE_THROW_FRAME(_exception) \
+do \
+{ \
+ (void)_p; \
+} \
+while (0)
+#endif
+
+#if defined(__sparc__)
+#if defined(__arch64__)
+extern "C" {
+ static void __rt_sigreturn_stub(void)
+ {
+ __asm__("mov %0, %%g1\n\t"
+ "ta 0x6d\n\t"
+ : /* no outputs */
+ : "i" (__NR_rt_sigreturn));
+ }
+ struct kernel_sigaction
+ {
+ void (*k_sa_sigaction)(int,siginfo_t *,void *);
+ unsigned long k_sa_flags;
+ void (*k_sa_restorer)(void);
+ sigset_t k_sa_mask;
+ };
+}
+#define INIT_SEGV \
+do \
+ { \
+ struct kernel_sigaction act; \
+ unsigned long stub = ((unsigned long)&__rt_sigreturn_stub); \
+ act.k_sa_sigaction = _Jv_catch_segv; \
+ sigemptyset (&act.k_sa_mask); \
+ act.k_sa_flags = SA_SIGINFO; \
+ act.k_sa_restorer = NULL; \
+ syscall (SYS_rt_sigaction, SIGSEGV, &act, NULL, \
+ stub - 8, _NSIG / 8); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct kernel_sigaction act; \
+ unsigned long stub = ((unsigned long)&__rt_sigreturn_stub); \
+ act.k_sa_sigaction = _Jv_catch_fpe; \
+ sigemptyset (&act.k_sa_mask); \
+ act.k_sa_flags = SA_SIGINFO; \
+ act.k_sa_restorer = NULL; \
+ syscall (SYS_rt_sigaction, SIGFPE, &act, NULL, \
+ stub - 8, _NSIG / 8); \
+ } \
+while (0)
+#else /* __arch64__ */
+
+extern "C" {
+ struct kernel_sigaction
+ {
+ void (*k_sa_sigaction)(int,siginfo_t *,void *);
+ unsigned long k_sa_mask, k_sa_flags;
+ void (*k_sa_restorer)(void);
+ };
+}
+
+#define INIT_SEGV \
+do \
+ { \
+ struct kernel_sigaction act; \
+ act.k_sa_sigaction = _Jv_catch_segv; \
+ act.k_sa_mask = 0; \
+ act.k_sa_flags = SA_SIGINFO; \
+ act.k_sa_restorer = NULL; \
+ syscall (SYS_sigaction, -SIGSEGV, &act, NULL); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct kernel_sigaction act; \
+ act.k_sa_sigaction = _Jv_catch_fpe; \
+ act.k_sa_mask = 0; \
+ act.k_sa_flags = SA_SIGINFO; \
+ act.k_sa_restorer = NULL; \
+ syscall (SYS_sigaction, -SIGFPE, &act, NULL); \
+ } \
+while (0)
+#endif
+#elif !defined(__ia64__)
+#define INIT_SEGV \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _Jv_catch_segv; \
+ sigemptyset (&act.sa_mask); \
+ act.sa_flags = SA_SIGINFO; \
+ syscall (SYS_sigaction, SIGSEGV, &act, NULL); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _Jv_catch_fpe; \
+ sigemptyset (&act.sa_mask); \
+ act.sa_flags = SA_SIGINFO; \
+ syscall (SYS_sigaction, SIGFPE, &act, NULL); \
+ } \
+while (0)
+
+/* We use syscall(SYS_sigaction) in INIT_SEGV and INIT_FPE instead of
+ * sigaction() because on some systems the pthreads wrappers for
+ * signal handlers are not compiled with unwind information, so it's
+ * not possible to unwind through them. This is a problem that will
+ * go away once all systems have pthreads libraries that are
+ * compiled with full unwind info. */
+
+#else /* __ia64__ */
+
+// On IA64, unwind information is mandatory, so we can unwind
+// correctly through glibc frames. Thus we call the ordinary
+// sigaction.
+
+#define INIT_SEGV \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _Jv_catch_segv; \
+ sigemptyset (&act.sa_mask); \
+ act.sa_flags = SA_SIGINFO; \
+ sigaction (SIGSEGV, &act, NULL); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _Jv_catch_fpe; \
+ sigemptyset (&act.sa_mask); \
+ act.sa_flags = SA_SIGINFO; \
+ sigaction (SIGFPE, &act, NULL); \
+ } \
+while (0)
+#endif /* __ia64__ || __sparc__ */
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/execution.h b/libjava/include/execution.h
new file mode 100644
index 000000000..c48b2fc32
--- /dev/null
+++ b/libjava/include/execution.h
@@ -0,0 +1,276 @@
+// execution.h - Execution engines. -*- c++ -*-
+
+/* Copyright (C) 2004, 2006, 2007 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JAVA_EXECUTION_H__
+#define __JAVA_EXECUTION_H__
+
+// This represents one execution engine. Note that we use function
+// pointers and not virtual methods to avoid calls to
+// __cxa_call_unexpected and the like.
+struct _Jv_ExecutionEngine
+{
+ public:
+
+ void (*unregister) (jclass);
+ // FIXME: probably should handle this elsewhere, see how
+ // interpreter does it.
+ bool (*need_resolve_string_fields) ();
+ void (*verify) (jclass);
+ void (*allocate_static_fields) (jclass, int, int);
+ void (*allocate_field_initializers) (jclass);
+ void (*create_ncode) (jclass);
+ _Jv_ResolvedMethod *(*resolve_method) (_Jv_Method *, jclass,
+ jboolean);
+ void (*post_miranda_hook) (jclass);
+ _Jv_ClosureList **(*get_closure_list) (jclass);
+};
+
+// This handles gcj-compiled code except that compiled with
+// -findirect-classes.
+struct _Jv_CompiledEngine : public _Jv_ExecutionEngine
+{
+ public:
+
+ static void do_unregister (jclass)
+ {
+ }
+
+ static bool do_need_resolve_string_fields ()
+ {
+ return true;
+ }
+
+ static void do_verify (jclass klass)
+ {
+ _Jv_Linker::verify_type_assertions (klass);
+ }
+
+ static _Jv_ResolvedMethod *do_resolve_method (_Jv_Method *, jclass,
+ jboolean)
+ {
+ return NULL;
+ }
+
+ static void do_allocate_static_fields (jclass,
+ int,
+ int)
+ {
+ }
+
+ static void do_allocate_field_initializers (jclass)
+ {
+ }
+
+ static void do_create_ncode (jclass)
+ {
+ // Not needed.
+ }
+
+ static void do_post_miranda_hook (jclass)
+ {
+ // Not needed.
+ }
+
+ static _Jv_ClosureList **do_get_closure_list (jclass)
+ {
+ return NULL;
+ }
+
+ _Jv_CompiledEngine ()
+ {
+ unregister = do_unregister;
+ need_resolve_string_fields = do_need_resolve_string_fields;
+ verify = do_verify;
+ allocate_static_fields = do_allocate_static_fields;
+ allocate_field_initializers = do_allocate_field_initializers;
+ create_ncode = do_create_ncode;
+ resolve_method = do_resolve_method;
+ post_miranda_hook = do_post_miranda_hook;
+ get_closure_list = do_get_closure_list;
+ }
+
+ // These operators make it so we don't have to link in libstdc++.
+ void *operator new (size_t bytes)
+ {
+ return _Jv_Malloc(bytes);
+ }
+
+ void operator delete (void *mem)
+ {
+ _Jv_Free(mem);
+ }
+};
+
+class _Jv_IndirectCompiledClass
+{
+public:
+ void **field_initializers;
+ _Jv_ClosureList **closures;
+};
+
+// This handles gcj-compiled code compiled with -findirect-classes.
+struct _Jv_IndirectCompiledEngine : public _Jv_CompiledEngine
+{
+ _Jv_IndirectCompiledEngine () : _Jv_CompiledEngine ()
+ {
+ allocate_static_fields = do_allocate_static_fields;
+ allocate_field_initializers = do_allocate_field_initializers;
+ get_closure_list = do_get_closure_list;
+ }
+
+ static _Jv_IndirectCompiledClass *get_aux_info (jclass klass)
+ {
+ _Jv_IndirectCompiledClass *aux =
+ (_Jv_IndirectCompiledClass*)klass->aux_info;
+ if (!aux)
+ {
+ aux = (_Jv_IndirectCompiledClass*)
+ _Jv_AllocRawObj (sizeof (_Jv_IndirectCompiledClass));
+ klass->aux_info = aux;
+ }
+
+ return aux;
+ }
+
+ static void do_allocate_field_initializers (jclass klass)
+ {
+ _Jv_IndirectCompiledClass *aux = get_aux_info (klass);
+ if (!aux)
+ {
+ aux = (_Jv_IndirectCompiledClass*)
+ _Jv_AllocRawObj (sizeof (_Jv_IndirectCompiledClass));
+ klass->aux_info = aux;
+ }
+
+ aux->field_initializers = (void **)_Jv_Malloc (klass->field_count
+ * sizeof (void*));
+
+ for (int i = 0; i < klass->field_count; i++)
+ {
+ _Jv_Field *field = &klass->fields[i];
+ if (field->flags & java::lang::reflect::Modifier::STATIC)
+ {
+ aux->field_initializers[i] = field->u.addr;
+ field->u.addr = NULL;
+ }
+ }
+ }
+
+ static void do_allocate_static_fields (jclass klass,
+ int pointer_size,
+ int other_size)
+ {
+ // Splitting the allocations here lets us scan reference fields
+ // and avoid scanning non-reference fields.
+ char *reference_fields = (char *) _Jv_AllocRawObj (pointer_size);
+ char *non_reference_fields = (char *) _Jv_AllocBytes (other_size);
+
+ _Jv_IndirectCompiledClass *aux
+ = (_Jv_IndirectCompiledClass*)klass->aux_info;
+
+ for (int i = 0; i < klass->field_count; i++)
+ {
+ _Jv_Field *field = &klass->fields[i];
+
+ if ((field->flags & java::lang::reflect::Modifier::STATIC) == 0)
+ continue;
+
+ char *base = field->isRef() ? reference_fields : non_reference_fields;
+ field->u.addr = base + field->u.boffset;
+
+ if (aux->field_initializers[i])
+ {
+ int field_size;
+ if (! field->isRef ())
+ field_size = field->type->size ();
+ else
+ field_size = sizeof (jobject);
+
+ memcpy (field->u.addr, aux->field_initializers[i], field_size);
+ }
+ }
+ _Jv_Free (aux->field_initializers);
+ }
+
+#ifdef INTERPRETER
+ static _Jv_ClosureList **do_get_closure_list (jclass klass)
+ {
+ _Jv_IndirectCompiledClass *aux = get_aux_info (klass);
+
+ if (!aux->closures)
+ aux->closures = _Jv_ClosureListFinalizer ();
+
+ return aux->closures;
+ }
+#endif
+};
+
+#ifdef INTERPRETER
+
+// This handles interpreted code.
+class _Jv_InterpreterEngine : public _Jv_ExecutionEngine
+{
+ public:
+
+ static void do_verify (jclass);
+ static void do_allocate_static_fields (jclass, int, int);
+ static void do_create_ncode (jclass);
+ static _Jv_ResolvedMethod *do_resolve_method (_Jv_Method *, jclass,
+ jboolean);
+
+ static bool do_need_resolve_string_fields ()
+ {
+ return false;
+ }
+
+ static void do_unregister(jclass klass)
+ {
+ _Jv_UnregisterClass(klass);
+ }
+
+ static void do_allocate_field_initializers (jclass)
+ {
+ }
+
+ static void do_post_miranda_hook (jclass);
+
+ static _Jv_ClosureList **do_get_closure_list (jclass klass);
+
+ _Jv_InterpreterEngine ()
+ {
+ unregister = do_unregister;
+ need_resolve_string_fields = do_need_resolve_string_fields;
+ verify = do_verify;
+ allocate_static_fields = do_allocate_static_fields;
+ allocate_field_initializers = do_allocate_field_initializers;
+ create_ncode = do_create_ncode;
+ resolve_method = do_resolve_method;
+ post_miranda_hook = do_post_miranda_hook;
+ get_closure_list = do_get_closure_list;
+ }
+
+ // These operators make it so we don't have to link in libstdc++.
+ void *operator new (size_t bytes)
+ {
+ return _Jv_Malloc(bytes);
+ }
+
+ void operator delete (void *mem)
+ {
+ _Jv_Free(mem);
+ }
+};
+
+extern _Jv_InterpreterEngine _Jv_soleInterpreterEngine;
+#endif // INTERPRETER
+
+extern _Jv_CompiledEngine _Jv_soleCompiledEngine;
+extern _Jv_IndirectCompiledEngine _Jv_soleIndirectCompiledEngine;
+#endif // __JAVA_EXECUTION_H__
diff --git a/libjava/include/hppa-signal.h b/libjava/include/hppa-signal.h
new file mode 100644
index 000000000..116a62ee8
--- /dev/null
+++ b/libjava/include/hppa-signal.h
@@ -0,0 +1,49 @@
+/* hppa-signal.h - Catch runtime signals and turn them into exceptions,
+ on a HP-UX 11 PA system. */
+
+/* Copyright (C) 2006, 2009 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#define SIGNAL_HANDLER(_name) \
+static void _name (int _dummy __attribute__ ((unused)), \
+ siginfo_t *_info __attribute__ ((__unused__)), \
+ void *arg __attribute__ ((__unused__)))
+
+#define MAKE_THROW_FRAME(_exception)
+
+#define INIT_SEGV \
+do \
+ { \
+ struct sigaction sa; \
+ sa.sa_sigaction = catch_segv; \
+ sigemptyset (&sa.sa_mask); \
+ sa.sa_flags = SA_SIGINFO | SA_NODEFER; \
+ sigaction (SIGSEGV, &sa, NULL); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct sigaction sa; \
+ sa.sa_sigaction = catch_fpe; \
+ sigemptyset (&sa.sa_mask); \
+ sa.sa_flags = SA_SIGINFO | SA_NODEFER; \
+ sigaction (SIGFPE, &sa, NULL); \
+ } \
+while (0)
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/i386-signal.h b/libjava/include/i386-signal.h
new file mode 100644
index 000000000..a3d3a1b75
--- /dev/null
+++ b/libjava/include/i386-signal.h
@@ -0,0 +1,167 @@
+// i386-signal.h - Catch runtime signals and turn them into exceptions
+// on an i386 based Linux system.
+
+/* Copyright (C) 1998, 1999, 2001, 2002, 2006, 2007 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+#include <sys/syscall.h>
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#define SIGNAL_HANDLER(_name) \
+static void _Jv_##_name (int, siginfo_t *, \
+ void *_p __attribute__ ((__unused__)))
+
+#define HANDLE_DIVIDE_OVERFLOW \
+do \
+{ \
+ struct ucontext *_uc = (struct ucontext *)_p; \
+ gregset_t &_gregs = _uc->uc_mcontext.gregs; \
+ unsigned char *_eip = (unsigned char *)_gregs[REG_EIP]; \
+ \
+ /* According to the JVM spec, "if the dividend is the negative \
+ * integer of largest possible magnitude for the type and the \
+ * divisor is -1, then overflow occurs and the result is equal to \
+ * the dividend. Despite the overflow, no exception occurs". \
+ \
+ * We handle this by inspecting the instruction which generated the \
+ * signal and advancing ip to point to the following instruction. \
+ * As the instructions are variable length it is necessary to do a \
+ * little calculation to figure out where the following instruction \
+ * actually is. \
+ \
+ */ \
+ \
+ /* Detect a signed division of Integer.MIN_VALUE. */ \
+ if (_eip[0] == 0xf7) \
+ { \
+ bool _min_value_dividend = false; \
+ unsigned char _modrm = _eip[1]; \
+ \
+ if (((_modrm >> 3) & 7) == 7) /* Signed divide */ \
+ { \
+ _min_value_dividend = \
+ _gregs[REG_EAX] == (greg_t)0x80000000UL; \
+ } \
+ \
+ if (_min_value_dividend) \
+ { \
+ unsigned char _rm = _modrm & 7; \
+ _gregs[REG_EDX] = 0; /* the remainder is zero */ \
+ switch (_modrm >> 6) \
+ { \
+ case 0: /* register indirect */ \
+ if (_rm == 5) /* 32-bit displacement */ \
+ _eip += 4; \
+ if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
+ _eip += 1; \
+ break; \
+ case 1: /* register indirect + 8-bit displacement */ \
+ _eip += 1; \
+ if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
+ _eip += 1; \
+ break; \
+ case 2: /* register indirect + 32-bit displacement */ \
+ _eip += 4; \
+ if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
+ _eip += 1; \
+ break; \
+ case 3: \
+ break; \
+ } \
+ _eip += 2; \
+ _gregs[REG_EIP] = (greg_t)_eip; \
+ return; \
+ } \
+ } \
+} \
+while (0)
+
+/* We use kernel_sigaction here because we're calling the kernel
+ directly rather than via glibc. The sigaction structure that the
+ syscall uses is a different shape from the one in userland and not
+ visible to us in a header file so we define it here. */
+
+extern "C"
+{
+ struct kernel_sigaction
+ {
+ void (*k_sa_sigaction)(int,siginfo_t *,void *);
+ unsigned long k_sa_flags;
+ void (*k_sa_restorer) (void);
+ sigset_t k_sa_mask;
+ };
+}
+
+#define MAKE_THROW_FRAME(_exception)
+
+#define RESTORE(name, syscall) RESTORE2 (name, syscall)
+#define RESTORE2(name, syscall) \
+asm \
+ ( \
+ ".text\n" \
+ ".byte 0 # Yes, this really is necessary\n" \
+ " .align 16\n" \
+ "__" #name ":\n" \
+ " movl $" #syscall ", %eax\n" \
+ " int $0x80" \
+ );
+
+/* The return code for realtime-signals. */
+RESTORE (restore_rt, __NR_rt_sigreturn)
+void restore_rt (void) asm ("__restore_rt")
+ __attribute__ ((visibility ("hidden")));
+
+#define INIT_SEGV \
+do \
+ { \
+ struct kernel_sigaction act; \
+ act.k_sa_sigaction = _Jv_catch_segv; \
+ sigemptyset (&act.k_sa_mask); \
+ act.k_sa_flags = SA_SIGINFO|0x4000000; \
+ act.k_sa_restorer = restore_rt; \
+ syscall (SYS_rt_sigaction, SIGSEGV, &act, NULL, _NSIG / 8); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct kernel_sigaction act; \
+ act.k_sa_sigaction = _Jv_catch_fpe; \
+ sigemptyset (&act.k_sa_mask); \
+ act.k_sa_flags = SA_SIGINFO|0x4000000; \
+ act.k_sa_restorer = restore_rt; \
+ syscall (SYS_rt_sigaction, SIGFPE, &act, NULL, _NSIG / 8); \
+ } \
+while (0)
+
+/* You might wonder why we use syscall(SYS_sigaction) in INIT_FPE
+ * instead of the standard sigaction(). This is necessary because of
+ * the shenanigans above where we increment the PC saved in the
+ * context and then return. This trick will only work when we are
+ * called _directly_ by the kernel, because linuxthreads wraps signal
+ * handlers and its wrappers do not copy the sigcontext struct back
+ * when returning from a signal handler. If we return from our divide
+ * handler to a linuxthreads wrapper, we will lose the PC adjustment
+ * we made and return to the faulting instruction again. Using
+ * syscall(SYS_sigaction) causes our handler to be called directly
+ * by the kernel, bypassing any wrappers.
+
+ * Also, there may not be any unwind info in the linuxthreads
+ * library's signal handlers and so we can't unwind through them
+ * anyway. */
+
+#endif /* JAVA_SIGNAL_H */
+
diff --git a/libjava/include/java-assert.h b/libjava/include/java-assert.h
new file mode 100644
index 000000000..1d3a49bfa
--- /dev/null
+++ b/libjava/include/java-assert.h
@@ -0,0 +1,38 @@
+// java-assert.h - Header file holding assertion definitions. -*- c++ -*-
+
+/* Copyright (C) 1998, 1999, 2010 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JAVA_ASSERT_H__
+#define __JAVA_ASSERT_H__
+
+// This is a libgcj implementation header.
+
+void _Jv_Abort (const char *, const char *, int, const char *)
+ __attribute__ ((__noreturn__));
+
+#ifdef __GCJ_DEBUG
+#define _Jv_AssertDoCall(Message) _Jv_Abort (__FUNCTION__, __FILE__, __LINE__, Message)
+
+#define JvAssertMessage(Expr, Message) \
+ do { if (! (Expr)) _Jv_AssertDoCall (Message); } while (0)
+#define JvAssert(Expr) \
+ do { if (! (Expr)) _Jv_AssertDoCall (# Expr); } while (0)
+
+#define JvFail(Message) _Jv_AssertDoCall (Message)
+
+#else /* __GCJ_DEBUG */
+
+#define _Jv_AssertDoCall(Message)
+#define JvAssertMessage(Expr, Message) (void) sizeof (Expr)
+#define JvAssert(Expr) (void) sizeof (Expr)
+#define JvFail(Message) _Jv_Abort (0, 0, 0, Message)
+
+#endif /* not __GCJ_DEBUG */
+
+#endif /* __JAVA_ASSERT_H__ */
diff --git a/libjava/include/java-chardecomp.h b/libjava/include/java-chardecomp.h
new file mode 100644
index 000000000..cdfd6adbb
--- /dev/null
+++ b/libjava/include/java-chardecomp.h
@@ -0,0 +1,3510 @@
+// java-chardecomp.h - Decomposition character tables -*- c++ -*-
+
+#ifndef __JAVA_CHARDECOMP_H__
+#define __JAVA_CHARDECOMP_H__
+
+
+// These tables are automatically generated by the scripts/unicode-decomp.pl
+// script. DO NOT EDIT the tables. Instead, fix the script
+// and run it again.
+
+// This file should only be included by natCollator.cc
+
+struct decomp_entry
+{
+ jchar key;
+ const char *value;
+};
+
+static const decomp_entry canonical_decomposition[] =
+{
+ { 0x00c0, "\x00\x41\x03\x00" },
+ { 0x00c1, "\x00\x41\x03\x01" },
+ { 0x00c2, "\x00\x41\x03\x02" },
+ { 0x00c3, "\x00\x41\x03\x03" },
+ { 0x00c4, "\x00\x41\x03\x08" },
+ { 0x00c5, "\x00\x41\x03\x0a" },
+ { 0x00c7, "\x00\x43\x03\x27" },
+ { 0x00c8, "\x00\x45\x03\x00" },
+ { 0x00c9, "\x00\x45\x03\x01" },
+ { 0x00ca, "\x00\x45\x03\x02" },
+ { 0x00cb, "\x00\x45\x03\x08" },
+ { 0x00cc, "\x00\x49\x03\x00" },
+ { 0x00cd, "\x00\x49\x03\x01" },
+ { 0x00ce, "\x00\x49\x03\x02" },
+ { 0x00cf, "\x00\x49\x03\x08" },
+ { 0x00d1, "\x00\x4e\x03\x03" },
+ { 0x00d2, "\x00\x4f\x03\x00" },
+ { 0x00d3, "\x00\x4f\x03\x01" },
+ { 0x00d4, "\x00\x4f\x03\x02" },
+ { 0x00d5, "\x00\x4f\x03\x03" },
+ { 0x00d6, "\x00\x4f\x03\x08" },
+ { 0x00d9, "\x00\x55\x03\x00" },
+ { 0x00da, "\x00\x55\x03\x01" },
+ { 0x00db, "\x00\x55\x03\x02" },
+ { 0x00dc, "\x00\x55\x03\x08" },
+ { 0x00dd, "\x00\x59\x03\x01" },
+ { 0x00e0, "\x00\x61\x03\x00" },
+ { 0x00e1, "\x00\x61\x03\x01" },
+ { 0x00e2, "\x00\x61\x03\x02" },
+ { 0x00e3, "\x00\x61\x03\x03" },
+ { 0x00e4, "\x00\x61\x03\x08" },
+ { 0x00e5, "\x00\x61\x03\x0a" },
+ { 0x00e7, "\x00\x63\x03\x27" },
+ { 0x00e8, "\x00\x65\x03\x00" },
+ { 0x00e9, "\x00\x65\x03\x01" },
+ { 0x00ea, "\x00\x65\x03\x02" },
+ { 0x00eb, "\x00\x65\x03\x08" },
+ { 0x00ec, "\x00\x69\x03\x00" },
+ { 0x00ed, "\x00\x69\x03\x01" },
+ { 0x00ee, "\x00\x69\x03\x02" },
+ { 0x00ef, "\x00\x69\x03\x08" },
+ { 0x00f1, "\x00\x6e\x03\x03" },
+ { 0x00f2, "\x00\x6f\x03\x00" },
+ { 0x00f3, "\x00\x6f\x03\x01" },
+ { 0x00f4, "\x00\x6f\x03\x02" },
+ { 0x00f5, "\x00\x6f\x03\x03" },
+ { 0x00f6, "\x00\x6f\x03\x08" },
+ { 0x00f9, "\x00\x75\x03\x00" },
+ { 0x00fa, "\x00\x75\x03\x01" },
+ { 0x00fb, "\x00\x75\x03\x02" },
+ { 0x00fc, "\x00\x75\x03\x08" },
+ { 0x00fd, "\x00\x79\x03\x01" },
+ { 0x00ff, "\x00\x79\x03\x08" },
+ { 0x0100, "\x00\x41\x03\x04" },
+ { 0x0101, "\x00\x61\x03\x04" },
+ { 0x0102, "\x00\x41\x03\x06" },
+ { 0x0103, "\x00\x61\x03\x06" },
+ { 0x0104, "\x00\x41\x03\x28" },
+ { 0x0105, "\x00\x61\x03\x28" },
+ { 0x0106, "\x00\x43\x03\x01" },
+ { 0x0107, "\x00\x63\x03\x01" },
+ { 0x0108, "\x00\x43\x03\x02" },
+ { 0x0109, "\x00\x63\x03\x02" },
+ { 0x010a, "\x00\x43\x03\x07" },
+ { 0x010b, "\x00\x63\x03\x07" },
+ { 0x010c, "\x00\x43\x03\x0c" },
+ { 0x010d, "\x00\x63\x03\x0c" },
+ { 0x010e, "\x00\x44\x03\x0c" },
+ { 0x010f, "\x00\x64\x03\x0c" },
+ { 0x0112, "\x00\x45\x03\x04" },
+ { 0x0113, "\x00\x65\x03\x04" },
+ { 0x0114, "\x00\x45\x03\x06" },
+ { 0x0115, "\x00\x65\x03\x06" },
+ { 0x0116, "\x00\x45\x03\x07" },
+ { 0x0117, "\x00\x65\x03\x07" },
+ { 0x0118, "\x00\x45\x03\x28" },
+ { 0x0119, "\x00\x65\x03\x28" },
+ { 0x011a, "\x00\x45\x03\x0c" },
+ { 0x011b, "\x00\x65\x03\x0c" },
+ { 0x011c, "\x00\x47\x03\x02" },
+ { 0x011d, "\x00\x67\x03\x02" },
+ { 0x011e, "\x00\x47\x03\x06" },
+ { 0x011f, "\x00\x67\x03\x06" },
+ { 0x0120, "\x00\x47\x03\x07" },
+ { 0x0121, "\x00\x67\x03\x07" },
+ { 0x0122, "\x00\x47\x03\x27" },
+ { 0x0123, "\x00\x67\x03\x27" },
+ { 0x0124, "\x00\x48\x03\x02" },
+ { 0x0125, "\x00\x68\x03\x02" },
+ { 0x0128, "\x00\x49\x03\x03" },
+ { 0x0129, "\x00\x69\x03\x03" },
+ { 0x012a, "\x00\x49\x03\x04" },
+ { 0x012b, "\x00\x69\x03\x04" },
+ { 0x012c, "\x00\x49\x03\x06" },
+ { 0x012d, "\x00\x69\x03\x06" },
+ { 0x012e, "\x00\x49\x03\x28" },
+ { 0x012f, "\x00\x69\x03\x28" },
+ { 0x0130, "\x00\x49\x03\x07" },
+ { 0x0134, "\x00\x4a\x03\x02" },
+ { 0x0135, "\x00\x6a\x03\x02" },
+ { 0x0136, "\x00\x4b\x03\x27" },
+ { 0x0137, "\x00\x6b\x03\x27" },
+ { 0x0139, "\x00\x4c\x03\x01" },
+ { 0x013a, "\x00\x6c\x03\x01" },
+ { 0x013b, "\x00\x4c\x03\x27" },
+ { 0x013c, "\x00\x6c\x03\x27" },
+ { 0x013d, "\x00\x4c\x03\x0c" },
+ { 0x013e, "\x00\x6c\x03\x0c" },
+ { 0x0143, "\x00\x4e\x03\x01" },
+ { 0x0144, "\x00\x6e\x03\x01" },
+ { 0x0145, "\x00\x4e\x03\x27" },
+ { 0x0146, "\x00\x6e\x03\x27" },
+ { 0x0147, "\x00\x4e\x03\x0c" },
+ { 0x0148, "\x00\x6e\x03\x0c" },
+ { 0x014c, "\x00\x4f\x03\x04" },
+ { 0x014d, "\x00\x6f\x03\x04" },
+ { 0x014e, "\x00\x4f\x03\x06" },
+ { 0x014f, "\x00\x6f\x03\x06" },
+ { 0x0150, "\x00\x4f\x03\x0b" },
+ { 0x0151, "\x00\x6f\x03\x0b" },
+ { 0x0154, "\x00\x52\x03\x01" },
+ { 0x0155, "\x00\x72\x03\x01" },
+ { 0x0156, "\x00\x52\x03\x27" },
+ { 0x0157, "\x00\x72\x03\x27" },
+ { 0x0158, "\x00\x52\x03\x0c" },
+ { 0x0159, "\x00\x72\x03\x0c" },
+ { 0x015a, "\x00\x53\x03\x01" },
+ { 0x015b, "\x00\x73\x03\x01" },
+ { 0x015c, "\x00\x53\x03\x02" },
+ { 0x015d, "\x00\x73\x03\x02" },
+ { 0x015e, "\x00\x53\x03\x27" },
+ { 0x015f, "\x00\x73\x03\x27" },
+ { 0x0160, "\x00\x53\x03\x0c" },
+ { 0x0161, "\x00\x73\x03\x0c" },
+ { 0x0162, "\x00\x54\x03\x27" },
+ { 0x0163, "\x00\x74\x03\x27" },
+ { 0x0164, "\x00\x54\x03\x0c" },
+ { 0x0165, "\x00\x74\x03\x0c" },
+ { 0x0168, "\x00\x55\x03\x03" },
+ { 0x0169, "\x00\x75\x03\x03" },
+ { 0x016a, "\x00\x55\x03\x04" },
+ { 0x016b, "\x00\x75\x03\x04" },
+ { 0x016c, "\x00\x55\x03\x06" },
+ { 0x016d, "\x00\x75\x03\x06" },
+ { 0x016e, "\x00\x55\x03\x0a" },
+ { 0x016f, "\x00\x75\x03\x0a" },
+ { 0x0170, "\x00\x55\x03\x0b" },
+ { 0x0171, "\x00\x75\x03\x0b" },
+ { 0x0172, "\x00\x55\x03\x28" },
+ { 0x0173, "\x00\x75\x03\x28" },
+ { 0x0174, "\x00\x57\x03\x02" },
+ { 0x0175, "\x00\x77\x03\x02" },
+ { 0x0176, "\x00\x59\x03\x02" },
+ { 0x0177, "\x00\x79\x03\x02" },
+ { 0x0178, "\x00\x59\x03\x08" },
+ { 0x0179, "\x00\x5a\x03\x01" },
+ { 0x017a, "\x00\x7a\x03\x01" },
+ { 0x017b, "\x00\x5a\x03\x07" },
+ { 0x017c, "\x00\x7a\x03\x07" },
+ { 0x017d, "\x00\x5a\x03\x0c" },
+ { 0x017e, "\x00\x7a\x03\x0c" },
+ { 0x01a0, "\x00\x4f\x03\x1b" },
+ { 0x01a1, "\x00\x6f\x03\x1b" },
+ { 0x01af, "\x00\x55\x03\x1b" },
+ { 0x01b0, "\x00\x75\x03\x1b" },
+ { 0x01cd, "\x00\x41\x03\x0c" },
+ { 0x01ce, "\x00\x61\x03\x0c" },
+ { 0x01cf, "\x00\x49\x03\x0c" },
+ { 0x01d0, "\x00\x69\x03\x0c" },
+ { 0x01d1, "\x00\x4f\x03\x0c" },
+ { 0x01d2, "\x00\x6f\x03\x0c" },
+ { 0x01d3, "\x00\x55\x03\x0c" },
+ { 0x01d4, "\x00\x75\x03\x0c" },
+ { 0x01d5, "\x00\xdc\x03\x04" },
+ { 0x01d6, "\x00\xfc\x03\x04" },
+ { 0x01d7, "\x00\xdc\x03\x01" },
+ { 0x01d8, "\x00\xfc\x03\x01" },
+ { 0x01d9, "\x00\xdc\x03\x0c" },
+ { 0x01da, "\x00\xfc\x03\x0c" },
+ { 0x01db, "\x00\xdc\x03\x00" },
+ { 0x01dc, "\x00\xfc\x03\x00" },
+ { 0x01de, "\x00\xc4\x03\x04" },
+ { 0x01df, "\x00\xe4\x03\x04" },
+ { 0x01e0, "\x02\x26\x03\x04" },
+ { 0x01e1, "\x02\x27\x03\x04" },
+ { 0x01e2, "\x00\xc6\x03\x04" },
+ { 0x01e3, "\x00\xe6\x03\x04" },
+ { 0x01e6, "\x00\x47\x03\x0c" },
+ { 0x01e7, "\x00\x67\x03\x0c" },
+ { 0x01e8, "\x00\x4b\x03\x0c" },
+ { 0x01e9, "\x00\x6b\x03\x0c" },
+ { 0x01ea, "\x00\x4f\x03\x28" },
+ { 0x01eb, "\x00\x6f\x03\x28" },
+ { 0x01ec, "\x01\xea\x03\x04" },
+ { 0x01ed, "\x01\xeb\x03\x04" },
+ { 0x01ee, "\x01\xb7\x03\x0c" },
+ { 0x01ef, "\x02\x92\x03\x0c" },
+ { 0x01f0, "\x00\x6a\x03\x0c" },
+ { 0x01f4, "\x00\x47\x03\x01" },
+ { 0x01f5, "\x00\x67\x03\x01" },
+ { 0x01f8, "\x00\x4e\x03\x00" },
+ { 0x01f9, "\x00\x6e\x03\x00" },
+ { 0x01fa, "\x00\xc5\x03\x01" },
+ { 0x01fb, "\x00\xe5\x03\x01" },
+ { 0x01fc, "\x00\xc6\x03\x01" },
+ { 0x01fd, "\x00\xe6\x03\x01" },
+ { 0x01fe, "\x00\xd8\x03\x01" },
+ { 0x01ff, "\x00\xf8\x03\x01" },
+ { 0x0200, "\x00\x41\x03\x0f" },
+ { 0x0201, "\x00\x61\x03\x0f" },
+ { 0x0202, "\x00\x41\x03\x11" },
+ { 0x0203, "\x00\x61\x03\x11" },
+ { 0x0204, "\x00\x45\x03\x0f" },
+ { 0x0205, "\x00\x65\x03\x0f" },
+ { 0x0206, "\x00\x45\x03\x11" },
+ { 0x0207, "\x00\x65\x03\x11" },
+ { 0x0208, "\x00\x49\x03\x0f" },
+ { 0x0209, "\x00\x69\x03\x0f" },
+ { 0x020a, "\x00\x49\x03\x11" },
+ { 0x020b, "\x00\x69\x03\x11" },
+ { 0x020c, "\x00\x4f\x03\x0f" },
+ { 0x020d, "\x00\x6f\x03\x0f" },
+ { 0x020e, "\x00\x4f\x03\x11" },
+ { 0x020f, "\x00\x6f\x03\x11" },
+ { 0x0210, "\x00\x52\x03\x0f" },
+ { 0x0211, "\x00\x72\x03\x0f" },
+ { 0x0212, "\x00\x52\x03\x11" },
+ { 0x0213, "\x00\x72\x03\x11" },
+ { 0x0214, "\x00\x55\x03\x0f" },
+ { 0x0215, "\x00\x75\x03\x0f" },
+ { 0x0216, "\x00\x55\x03\x11" },
+ { 0x0217, "\x00\x75\x03\x11" },
+ { 0x0218, "\x00\x53\x03\x26" },
+ { 0x0219, "\x00\x73\x03\x26" },
+ { 0x021a, "\x00\x54\x03\x26" },
+ { 0x021b, "\x00\x74\x03\x26" },
+ { 0x021e, "\x00\x48\x03\x0c" },
+ { 0x021f, "\x00\x68\x03\x0c" },
+ { 0x0226, "\x00\x41\x03\x07" },
+ { 0x0227, "\x00\x61\x03\x07" },
+ { 0x0228, "\x00\x45\x03\x27" },
+ { 0x0229, "\x00\x65\x03\x27" },
+ { 0x022a, "\x00\xd6\x03\x04" },
+ { 0x022b, "\x00\xf6\x03\x04" },
+ { 0x022c, "\x00\xd5\x03\x04" },
+ { 0x022d, "\x00\xf5\x03\x04" },
+ { 0x022e, "\x00\x4f\x03\x07" },
+ { 0x022f, "\x00\x6f\x03\x07" },
+ { 0x0230, "\x02\x2e\x03\x04" },
+ { 0x0231, "\x02\x2f\x03\x04" },
+ { 0x0232, "\x00\x59\x03\x04" },
+ { 0x0233, "\x00\x79\x03\x04" },
+ { 0x0340, "\x03\x00" },
+ { 0x0341, "\x03\x01" },
+ { 0x0343, "\x03\x13" },
+ { 0x0344, "\x03\x08\x03\x01" },
+ { 0x0374, "\x02\xb9" },
+ { 0x037e, "\x00\x3b" },
+ { 0x0385, "\x00\xa8\x03\x01" },
+ { 0x0386, "\x03\x91\x03\x01" },
+ { 0x0387, "\x00\xb7" },
+ { 0x0388, "\x03\x95\x03\x01" },
+ { 0x0389, "\x03\x97\x03\x01" },
+ { 0x038a, "\x03\x99\x03\x01" },
+ { 0x038c, "\x03\x9f\x03\x01" },
+ { 0x038e, "\x03\xa5\x03\x01" },
+ { 0x038f, "\x03\xa9\x03\x01" },
+ { 0x0390, "\x03\xca\x03\x01" },
+ { 0x03aa, "\x03\x99\x03\x08" },
+ { 0x03ab, "\x03\xa5\x03\x08" },
+ { 0x03ac, "\x03\xb1\x03\x01" },
+ { 0x03ad, "\x03\xb5\x03\x01" },
+ { 0x03ae, "\x03\xb7\x03\x01" },
+ { 0x03af, "\x03\xb9\x03\x01" },
+ { 0x03b0, "\x03\xcb\x03\x01" },
+ { 0x03ca, "\x03\xb9\x03\x08" },
+ { 0x03cb, "\x03\xc5\x03\x08" },
+ { 0x03cc, "\x03\xbf\x03\x01" },
+ { 0x03cd, "\x03\xc5\x03\x01" },
+ { 0x03ce, "\x03\xc9\x03\x01" },
+ { 0x03d3, "\x03\xd2\x03\x01" },
+ { 0x03d4, "\x03\xd2\x03\x08" },
+ { 0x0400, "\x04\x15\x03\x00" },
+ { 0x0401, "\x04\x15\x03\x08" },
+ { 0x0403, "\x04\x13\x03\x01" },
+ { 0x0407, "\x04\x06\x03\x08" },
+ { 0x040c, "\x04\x1a\x03\x01" },
+ { 0x040d, "\x04\x18\x03\x00" },
+ { 0x040e, "\x04\x23\x03\x06" },
+ { 0x0419, "\x04\x18\x03\x06" },
+ { 0x0439, "\x04\x38\x03\x06" },
+ { 0x0450, "\x04\x35\x03\x00" },
+ { 0x0451, "\x04\x35\x03\x08" },
+ { 0x0453, "\x04\x33\x03\x01" },
+ { 0x0457, "\x04\x56\x03\x08" },
+ { 0x045c, "\x04\x3a\x03\x01" },
+ { 0x045d, "\x04\x38\x03\x00" },
+ { 0x045e, "\x04\x43\x03\x06" },
+ { 0x0476, "\x04\x74\x03\x0f" },
+ { 0x0477, "\x04\x75\x03\x0f" },
+ { 0x04c1, "\x04\x16\x03\x06" },
+ { 0x04c2, "\x04\x36\x03\x06" },
+ { 0x04d0, "\x04\x10\x03\x06" },
+ { 0x04d1, "\x04\x30\x03\x06" },
+ { 0x04d2, "\x04\x10\x03\x08" },
+ { 0x04d3, "\x04\x30\x03\x08" },
+ { 0x04d6, "\x04\x15\x03\x06" },
+ { 0x04d7, "\x04\x35\x03\x06" },
+ { 0x04da, "\x04\xd8\x03\x08" },
+ { 0x04db, "\x04\xd9\x03\x08" },
+ { 0x04dc, "\x04\x16\x03\x08" },
+ { 0x04dd, "\x04\x36\x03\x08" },
+ { 0x04de, "\x04\x17\x03\x08" },
+ { 0x04df, "\x04\x37\x03\x08" },
+ { 0x04e2, "\x04\x18\x03\x04" },
+ { 0x04e3, "\x04\x38\x03\x04" },
+ { 0x04e4, "\x04\x18\x03\x08" },
+ { 0x04e5, "\x04\x38\x03\x08" },
+ { 0x04e6, "\x04\x1e\x03\x08" },
+ { 0x04e7, "\x04\x3e\x03\x08" },
+ { 0x04ea, "\x04\xe8\x03\x08" },
+ { 0x04eb, "\x04\xe9\x03\x08" },
+ { 0x04ec, "\x04\x2d\x03\x08" },
+ { 0x04ed, "\x04\x4d\x03\x08" },
+ { 0x04ee, "\x04\x23\x03\x04" },
+ { 0x04ef, "\x04\x43\x03\x04" },
+ { 0x04f0, "\x04\x23\x03\x08" },
+ { 0x04f1, "\x04\x43\x03\x08" },
+ { 0x04f2, "\x04\x23\x03\x0b" },
+ { 0x04f3, "\x04\x43\x03\x0b" },
+ { 0x04f4, "\x04\x27\x03\x08" },
+ { 0x04f5, "\x04\x47\x03\x08" },
+ { 0x04f8, "\x04\x2b\x03\x08" },
+ { 0x04f9, "\x04\x4b\x03\x08" },
+ { 0x0622, "\x06\x27\x06\x53" },
+ { 0x0623, "\x06\x27\x06\x54" },
+ { 0x0624, "\x06\x48\x06\x54" },
+ { 0x0625, "\x06\x27\x06\x55" },
+ { 0x0626, "\x06\x4a\x06\x54" },
+ { 0x06c0, "\x06\xd5\x06\x54" },
+ { 0x06c2, "\x06\xc1\x06\x54" },
+ { 0x06d3, "\x06\xd2\x06\x54" },
+ { 0x0929, "\x09\x28\x09\x3c" },
+ { 0x0931, "\x09\x30\x09\x3c" },
+ { 0x0934, "\x09\x33\x09\x3c" },
+ { 0x0958, "\x09\x15\x09\x3c" },
+ { 0x0959, "\x09\x16\x09\x3c" },
+ { 0x095a, "\x09\x17\x09\x3c" },
+ { 0x095b, "\x09\x1c\x09\x3c" },
+ { 0x095c, "\x09\x21\x09\x3c" },
+ { 0x095d, "\x09\x22\x09\x3c" },
+ { 0x095e, "\x09\x2b\x09\x3c" },
+ { 0x095f, "\x09\x2f\x09\x3c" },
+ { 0x09cb, "\x09\xc7\x09\xbe" },
+ { 0x09cc, "\x09\xc7\x09\xd7" },
+ { 0x09dc, "\x09\xa1\x09\xbc" },
+ { 0x09dd, "\x09\xa2\x09\xbc" },
+ { 0x09df, "\x09\xaf\x09\xbc" },
+ { 0x0a33, "\x0a\x32\x0a\x3c" },
+ { 0x0a36, "\x0a\x38\x0a\x3c" },
+ { 0x0a59, "\x0a\x16\x0a\x3c" },
+ { 0x0a5a, "\x0a\x17\x0a\x3c" },
+ { 0x0a5b, "\x0a\x1c\x0a\x3c" },
+ { 0x0a5e, "\x0a\x2b\x0a\x3c" },
+ { 0x0b48, "\x0b\x47\x0b\x56" },
+ { 0x0b4b, "\x0b\x47\x0b\x3e" },
+ { 0x0b4c, "\x0b\x47\x0b\x57" },
+ { 0x0b5c, "\x0b\x21\x0b\x3c" },
+ { 0x0b5d, "\x0b\x22\x0b\x3c" },
+ { 0x0b94, "\x0b\x92\x0b\xd7" },
+ { 0x0bca, "\x0b\xc6\x0b\xbe" },
+ { 0x0bcb, "\x0b\xc7\x0b\xbe" },
+ { 0x0bcc, "\x0b\xc6\x0b\xd7" },
+ { 0x0c48, "\x0c\x46\x0c\x56" },
+ { 0x0cc0, "\x0c\xbf\x0c\xd5" },
+ { 0x0cc7, "\x0c\xc6\x0c\xd5" },
+ { 0x0cc8, "\x0c\xc6\x0c\xd6" },
+ { 0x0cca, "\x0c\xc6\x0c\xc2" },
+ { 0x0ccb, "\x0c\xca\x0c\xd5" },
+ { 0x0d4a, "\x0d\x46\x0d\x3e" },
+ { 0x0d4b, "\x0d\x47\x0d\x3e" },
+ { 0x0d4c, "\x0d\x46\x0d\x57" },
+ { 0x0dda, "\x0d\xd9\x0d\xca" },
+ { 0x0ddc, "\x0d\xd9\x0d\xcf" },
+ { 0x0ddd, "\x0d\xdc\x0d\xca" },
+ { 0x0dde, "\x0d\xd9\x0d\xdf" },
+ { 0x0f43, "\x0f\x42\x0f\xb7" },
+ { 0x0f4d, "\x0f\x4c\x0f\xb7" },
+ { 0x0f52, "\x0f\x51\x0f\xb7" },
+ { 0x0f57, "\x0f\x56\x0f\xb7" },
+ { 0x0f5c, "\x0f\x5b\x0f\xb7" },
+ { 0x0f69, "\x0f\x40\x0f\xb5" },
+ { 0x0f73, "\x0f\x71\x0f\x72" },
+ { 0x0f75, "\x0f\x71\x0f\x74" },
+ { 0x0f76, "\x0f\xb2\x0f\x80" },
+ { 0x0f78, "\x0f\xb3\x0f\x80" },
+ { 0x0f81, "\x0f\x71\x0f\x80" },
+ { 0x0f93, "\x0f\x92\x0f\xb7" },
+ { 0x0f9d, "\x0f\x9c\x0f\xb7" },
+ { 0x0fa2, "\x0f\xa1\x0f\xb7" },
+ { 0x0fa7, "\x0f\xa6\x0f\xb7" },
+ { 0x0fac, "\x0f\xab\x0f\xb7" },
+ { 0x0fb9, "\x0f\x90\x0f\xb5" },
+ { 0x1026, "\x10\x25\x10\x2e" },
+ { 0x1e00, "\x00\x41\x03\x25" },
+ { 0x1e01, "\x00\x61\x03\x25" },
+ { 0x1e02, "\x00\x42\x03\x07" },
+ { 0x1e03, "\x00\x62\x03\x07" },
+ { 0x1e04, "\x00\x42\x03\x23" },
+ { 0x1e05, "\x00\x62\x03\x23" },
+ { 0x1e06, "\x00\x42\x03\x31" },
+ { 0x1e07, "\x00\x62\x03\x31" },
+ { 0x1e08, "\x00\xc7\x03\x01" },
+ { 0x1e09, "\x00\xe7\x03\x01" },
+ { 0x1e0a, "\x00\x44\x03\x07" },
+ { 0x1e0b, "\x00\x64\x03\x07" },
+ { 0x1e0c, "\x00\x44\x03\x23" },
+ { 0x1e0d, "\x00\x64\x03\x23" },
+ { 0x1e0e, "\x00\x44\x03\x31" },
+ { 0x1e0f, "\x00\x64\x03\x31" },
+ { 0x1e10, "\x00\x44\x03\x27" },
+ { 0x1e11, "\x00\x64\x03\x27" },
+ { 0x1e12, "\x00\x44\x03\x2d" },
+ { 0x1e13, "\x00\x64\x03\x2d" },
+ { 0x1e14, "\x01\x12\x03\x00" },
+ { 0x1e15, "\x01\x13\x03\x00" },
+ { 0x1e16, "\x01\x12\x03\x01" },
+ { 0x1e17, "\x01\x13\x03\x01" },
+ { 0x1e18, "\x00\x45\x03\x2d" },
+ { 0x1e19, "\x00\x65\x03\x2d" },
+ { 0x1e1a, "\x00\x45\x03\x30" },
+ { 0x1e1b, "\x00\x65\x03\x30" },
+ { 0x1e1c, "\x02\x28\x03\x06" },
+ { 0x1e1d, "\x02\x29\x03\x06" },
+ { 0x1e1e, "\x00\x46\x03\x07" },
+ { 0x1e1f, "\x00\x66\x03\x07" },
+ { 0x1e20, "\x00\x47\x03\x04" },
+ { 0x1e21, "\x00\x67\x03\x04" },
+ { 0x1e22, "\x00\x48\x03\x07" },
+ { 0x1e23, "\x00\x68\x03\x07" },
+ { 0x1e24, "\x00\x48\x03\x23" },
+ { 0x1e25, "\x00\x68\x03\x23" },
+ { 0x1e26, "\x00\x48\x03\x08" },
+ { 0x1e27, "\x00\x68\x03\x08" },
+ { 0x1e28, "\x00\x48\x03\x27" },
+ { 0x1e29, "\x00\x68\x03\x27" },
+ { 0x1e2a, "\x00\x48\x03\x2e" },
+ { 0x1e2b, "\x00\x68\x03\x2e" },
+ { 0x1e2c, "\x00\x49\x03\x30" },
+ { 0x1e2d, "\x00\x69\x03\x30" },
+ { 0x1e2e, "\x00\xcf\x03\x01" },
+ { 0x1e2f, "\x00\xef\x03\x01" },
+ { 0x1e30, "\x00\x4b\x03\x01" },
+ { 0x1e31, "\x00\x6b\x03\x01" },
+ { 0x1e32, "\x00\x4b\x03\x23" },
+ { 0x1e33, "\x00\x6b\x03\x23" },
+ { 0x1e34, "\x00\x4b\x03\x31" },
+ { 0x1e35, "\x00\x6b\x03\x31" },
+ { 0x1e36, "\x00\x4c\x03\x23" },
+ { 0x1e37, "\x00\x6c\x03\x23" },
+ { 0x1e38, "\x1e\x36\x03\x04" },
+ { 0x1e39, "\x1e\x37\x03\x04" },
+ { 0x1e3a, "\x00\x4c\x03\x31" },
+ { 0x1e3b, "\x00\x6c\x03\x31" },
+ { 0x1e3c, "\x00\x4c\x03\x2d" },
+ { 0x1e3d, "\x00\x6c\x03\x2d" },
+ { 0x1e3e, "\x00\x4d\x03\x01" },
+ { 0x1e3f, "\x00\x6d\x03\x01" },
+ { 0x1e40, "\x00\x4d\x03\x07" },
+ { 0x1e41, "\x00\x6d\x03\x07" },
+ { 0x1e42, "\x00\x4d\x03\x23" },
+ { 0x1e43, "\x00\x6d\x03\x23" },
+ { 0x1e44, "\x00\x4e\x03\x07" },
+ { 0x1e45, "\x00\x6e\x03\x07" },
+ { 0x1e46, "\x00\x4e\x03\x23" },
+ { 0x1e47, "\x00\x6e\x03\x23" },
+ { 0x1e48, "\x00\x4e\x03\x31" },
+ { 0x1e49, "\x00\x6e\x03\x31" },
+ { 0x1e4a, "\x00\x4e\x03\x2d" },
+ { 0x1e4b, "\x00\x6e\x03\x2d" },
+ { 0x1e4c, "\x00\xd5\x03\x01" },
+ { 0x1e4d, "\x00\xf5\x03\x01" },
+ { 0x1e4e, "\x00\xd5\x03\x08" },
+ { 0x1e4f, "\x00\xf5\x03\x08" },
+ { 0x1e50, "\x01\x4c\x03\x00" },
+ { 0x1e51, "\x01\x4d\x03\x00" },
+ { 0x1e52, "\x01\x4c\x03\x01" },
+ { 0x1e53, "\x01\x4d\x03\x01" },
+ { 0x1e54, "\x00\x50\x03\x01" },
+ { 0x1e55, "\x00\x70\x03\x01" },
+ { 0x1e56, "\x00\x50\x03\x07" },
+ { 0x1e57, "\x00\x70\x03\x07" },
+ { 0x1e58, "\x00\x52\x03\x07" },
+ { 0x1e59, "\x00\x72\x03\x07" },
+ { 0x1e5a, "\x00\x52\x03\x23" },
+ { 0x1e5b, "\x00\x72\x03\x23" },
+ { 0x1e5c, "\x1e\x5a\x03\x04" },
+ { 0x1e5d, "\x1e\x5b\x03\x04" },
+ { 0x1e5e, "\x00\x52\x03\x31" },
+ { 0x1e5f, "\x00\x72\x03\x31" },
+ { 0x1e60, "\x00\x53\x03\x07" },
+ { 0x1e61, "\x00\x73\x03\x07" },
+ { 0x1e62, "\x00\x53\x03\x23" },
+ { 0x1e63, "\x00\x73\x03\x23" },
+ { 0x1e64, "\x01\x5a\x03\x07" },
+ { 0x1e65, "\x01\x5b\x03\x07" },
+ { 0x1e66, "\x01\x60\x03\x07" },
+ { 0x1e67, "\x01\x61\x03\x07" },
+ { 0x1e68, "\x1e\x62\x03\x07" },
+ { 0x1e69, "\x1e\x63\x03\x07" },
+ { 0x1e6a, "\x00\x54\x03\x07" },
+ { 0x1e6b, "\x00\x74\x03\x07" },
+ { 0x1e6c, "\x00\x54\x03\x23" },
+ { 0x1e6d, "\x00\x74\x03\x23" },
+ { 0x1e6e, "\x00\x54\x03\x31" },
+ { 0x1e6f, "\x00\x74\x03\x31" },
+ { 0x1e70, "\x00\x54\x03\x2d" },
+ { 0x1e71, "\x00\x74\x03\x2d" },
+ { 0x1e72, "\x00\x55\x03\x24" },
+ { 0x1e73, "\x00\x75\x03\x24" },
+ { 0x1e74, "\x00\x55\x03\x30" },
+ { 0x1e75, "\x00\x75\x03\x30" },
+ { 0x1e76, "\x00\x55\x03\x2d" },
+ { 0x1e77, "\x00\x75\x03\x2d" },
+ { 0x1e78, "\x01\x68\x03\x01" },
+ { 0x1e79, "\x01\x69\x03\x01" },
+ { 0x1e7a, "\x01\x6a\x03\x08" },
+ { 0x1e7b, "\x01\x6b\x03\x08" },
+ { 0x1e7c, "\x00\x56\x03\x03" },
+ { 0x1e7d, "\x00\x76\x03\x03" },
+ { 0x1e7e, "\x00\x56\x03\x23" },
+ { 0x1e7f, "\x00\x76\x03\x23" },
+ { 0x1e80, "\x00\x57\x03\x00" },
+ { 0x1e81, "\x00\x77\x03\x00" },
+ { 0x1e82, "\x00\x57\x03\x01" },
+ { 0x1e83, "\x00\x77\x03\x01" },
+ { 0x1e84, "\x00\x57\x03\x08" },
+ { 0x1e85, "\x00\x77\x03\x08" },
+ { 0x1e86, "\x00\x57\x03\x07" },
+ { 0x1e87, "\x00\x77\x03\x07" },
+ { 0x1e88, "\x00\x57\x03\x23" },
+ { 0x1e89, "\x00\x77\x03\x23" },
+ { 0x1e8a, "\x00\x58\x03\x07" },
+ { 0x1e8b, "\x00\x78\x03\x07" },
+ { 0x1e8c, "\x00\x58\x03\x08" },
+ { 0x1e8d, "\x00\x78\x03\x08" },
+ { 0x1e8e, "\x00\x59\x03\x07" },
+ { 0x1e8f, "\x00\x79\x03\x07" },
+ { 0x1e90, "\x00\x5a\x03\x02" },
+ { 0x1e91, "\x00\x7a\x03\x02" },
+ { 0x1e92, "\x00\x5a\x03\x23" },
+ { 0x1e93, "\x00\x7a\x03\x23" },
+ { 0x1e94, "\x00\x5a\x03\x31" },
+ { 0x1e95, "\x00\x7a\x03\x31" },
+ { 0x1e96, "\x00\x68\x03\x31" },
+ { 0x1e97, "\x00\x74\x03\x08" },
+ { 0x1e98, "\x00\x77\x03\x0a" },
+ { 0x1e99, "\x00\x79\x03\x0a" },
+ { 0x1e9b, "\x01\x7f\x03\x07" },
+ { 0x1ea0, "\x00\x41\x03\x23" },
+ { 0x1ea1, "\x00\x61\x03\x23" },
+ { 0x1ea2, "\x00\x41\x03\x09" },
+ { 0x1ea3, "\x00\x61\x03\x09" },
+ { 0x1ea4, "\x00\xc2\x03\x01" },
+ { 0x1ea5, "\x00\xe2\x03\x01" },
+ { 0x1ea6, "\x00\xc2\x03\x00" },
+ { 0x1ea7, "\x00\xe2\x03\x00" },
+ { 0x1ea8, "\x00\xc2\x03\x09" },
+ { 0x1ea9, "\x00\xe2\x03\x09" },
+ { 0x1eaa, "\x00\xc2\x03\x03" },
+ { 0x1eab, "\x00\xe2\x03\x03" },
+ { 0x1eac, "\x1e\xa0\x03\x02" },
+ { 0x1ead, "\x1e\xa1\x03\x02" },
+ { 0x1eae, "\x01\x02\x03\x01" },
+ { 0x1eaf, "\x01\x03\x03\x01" },
+ { 0x1eb0, "\x01\x02\x03\x00" },
+ { 0x1eb1, "\x01\x03\x03\x00" },
+ { 0x1eb2, "\x01\x02\x03\x09" },
+ { 0x1eb3, "\x01\x03\x03\x09" },
+ { 0x1eb4, "\x01\x02\x03\x03" },
+ { 0x1eb5, "\x01\x03\x03\x03" },
+ { 0x1eb6, "\x1e\xa0\x03\x06" },
+ { 0x1eb7, "\x1e\xa1\x03\x06" },
+ { 0x1eb8, "\x00\x45\x03\x23" },
+ { 0x1eb9, "\x00\x65\x03\x23" },
+ { 0x1eba, "\x00\x45\x03\x09" },
+ { 0x1ebb, "\x00\x65\x03\x09" },
+ { 0x1ebc, "\x00\x45\x03\x03" },
+ { 0x1ebd, "\x00\x65\x03\x03" },
+ { 0x1ebe, "\x00\xca\x03\x01" },
+ { 0x1ebf, "\x00\xea\x03\x01" },
+ { 0x1ec0, "\x00\xca\x03\x00" },
+ { 0x1ec1, "\x00\xea\x03\x00" },
+ { 0x1ec2, "\x00\xca\x03\x09" },
+ { 0x1ec3, "\x00\xea\x03\x09" },
+ { 0x1ec4, "\x00\xca\x03\x03" },
+ { 0x1ec5, "\x00\xea\x03\x03" },
+ { 0x1ec6, "\x1e\xb8\x03\x02" },
+ { 0x1ec7, "\x1e\xb9\x03\x02" },
+ { 0x1ec8, "\x00\x49\x03\x09" },
+ { 0x1ec9, "\x00\x69\x03\x09" },
+ { 0x1eca, "\x00\x49\x03\x23" },
+ { 0x1ecb, "\x00\x69\x03\x23" },
+ { 0x1ecc, "\x00\x4f\x03\x23" },
+ { 0x1ecd, "\x00\x6f\x03\x23" },
+ { 0x1ece, "\x00\x4f\x03\x09" },
+ { 0x1ecf, "\x00\x6f\x03\x09" },
+ { 0x1ed0, "\x00\xd4\x03\x01" },
+ { 0x1ed1, "\x00\xf4\x03\x01" },
+ { 0x1ed2, "\x00\xd4\x03\x00" },
+ { 0x1ed3, "\x00\xf4\x03\x00" },
+ { 0x1ed4, "\x00\xd4\x03\x09" },
+ { 0x1ed5, "\x00\xf4\x03\x09" },
+ { 0x1ed6, "\x00\xd4\x03\x03" },
+ { 0x1ed7, "\x00\xf4\x03\x03" },
+ { 0x1ed8, "\x1e\xcc\x03\x02" },
+ { 0x1ed9, "\x1e\xcd\x03\x02" },
+ { 0x1eda, "\x01\xa0\x03\x01" },
+ { 0x1edb, "\x01\xa1\x03\x01" },
+ { 0x1edc, "\x01\xa0\x03\x00" },
+ { 0x1edd, "\x01\xa1\x03\x00" },
+ { 0x1ede, "\x01\xa0\x03\x09" },
+ { 0x1edf, "\x01\xa1\x03\x09" },
+ { 0x1ee0, "\x01\xa0\x03\x03" },
+ { 0x1ee1, "\x01\xa1\x03\x03" },
+ { 0x1ee2, "\x01\xa0\x03\x23" },
+ { 0x1ee3, "\x01\xa1\x03\x23" },
+ { 0x1ee4, "\x00\x55\x03\x23" },
+ { 0x1ee5, "\x00\x75\x03\x23" },
+ { 0x1ee6, "\x00\x55\x03\x09" },
+ { 0x1ee7, "\x00\x75\x03\x09" },
+ { 0x1ee8, "\x01\xaf\x03\x01" },
+ { 0x1ee9, "\x01\xb0\x03\x01" },
+ { 0x1eea, "\x01\xaf\x03\x00" },
+ { 0x1eeb, "\x01\xb0\x03\x00" },
+ { 0x1eec, "\x01\xaf\x03\x09" },
+ { 0x1eed, "\x01\xb0\x03\x09" },
+ { 0x1eee, "\x01\xaf\x03\x03" },
+ { 0x1eef, "\x01\xb0\x03\x03" },
+ { 0x1ef0, "\x01\xaf\x03\x23" },
+ { 0x1ef1, "\x01\xb0\x03\x23" },
+ { 0x1ef2, "\x00\x59\x03\x00" },
+ { 0x1ef3, "\x00\x79\x03\x00" },
+ { 0x1ef4, "\x00\x59\x03\x23" },
+ { 0x1ef5, "\x00\x79\x03\x23" },
+ { 0x1ef6, "\x00\x59\x03\x09" },
+ { 0x1ef7, "\x00\x79\x03\x09" },
+ { 0x1ef8, "\x00\x59\x03\x03" },
+ { 0x1ef9, "\x00\x79\x03\x03" },
+ { 0x1f00, "\x03\xb1\x03\x13" },
+ { 0x1f01, "\x03\xb1\x03\x14" },
+ { 0x1f02, "\x1f\x00\x03\x00" },
+ { 0x1f03, "\x1f\x01\x03\x00" },
+ { 0x1f04, "\x1f\x00\x03\x01" },
+ { 0x1f05, "\x1f\x01\x03\x01" },
+ { 0x1f06, "\x1f\x00\x03\x42" },
+ { 0x1f07, "\x1f\x01\x03\x42" },
+ { 0x1f08, "\x03\x91\x03\x13" },
+ { 0x1f09, "\x03\x91\x03\x14" },
+ { 0x1f0a, "\x1f\x08\x03\x00" },
+ { 0x1f0b, "\x1f\x09\x03\x00" },
+ { 0x1f0c, "\x1f\x08\x03\x01" },
+ { 0x1f0d, "\x1f\x09\x03\x01" },
+ { 0x1f0e, "\x1f\x08\x03\x42" },
+ { 0x1f0f, "\x1f\x09\x03\x42" },
+ { 0x1f10, "\x03\xb5\x03\x13" },
+ { 0x1f11, "\x03\xb5\x03\x14" },
+ { 0x1f12, "\x1f\x10\x03\x00" },
+ { 0x1f13, "\x1f\x11\x03\x00" },
+ { 0x1f14, "\x1f\x10\x03\x01" },
+ { 0x1f15, "\x1f\x11\x03\x01" },
+ { 0x1f18, "\x03\x95\x03\x13" },
+ { 0x1f19, "\x03\x95\x03\x14" },
+ { 0x1f1a, "\x1f\x18\x03\x00" },
+ { 0x1f1b, "\x1f\x19\x03\x00" },
+ { 0x1f1c, "\x1f\x18\x03\x01" },
+ { 0x1f1d, "\x1f\x19\x03\x01" },
+ { 0x1f20, "\x03\xb7\x03\x13" },
+ { 0x1f21, "\x03\xb7\x03\x14" },
+ { 0x1f22, "\x1f\x20\x03\x00" },
+ { 0x1f23, "\x1f\x21\x03\x00" },
+ { 0x1f24, "\x1f\x20\x03\x01" },
+ { 0x1f25, "\x1f\x21\x03\x01" },
+ { 0x1f26, "\x1f\x20\x03\x42" },
+ { 0x1f27, "\x1f\x21\x03\x42" },
+ { 0x1f28, "\x03\x97\x03\x13" },
+ { 0x1f29, "\x03\x97\x03\x14" },
+ { 0x1f2a, "\x1f\x28\x03\x00" },
+ { 0x1f2b, "\x1f\x29\x03\x00" },
+ { 0x1f2c, "\x1f\x28\x03\x01" },
+ { 0x1f2d, "\x1f\x29\x03\x01" },
+ { 0x1f2e, "\x1f\x28\x03\x42" },
+ { 0x1f2f, "\x1f\x29\x03\x42" },
+ { 0x1f30, "\x03\xb9\x03\x13" },
+ { 0x1f31, "\x03\xb9\x03\x14" },
+ { 0x1f32, "\x1f\x30\x03\x00" },
+ { 0x1f33, "\x1f\x31\x03\x00" },
+ { 0x1f34, "\x1f\x30\x03\x01" },
+ { 0x1f35, "\x1f\x31\x03\x01" },
+ { 0x1f36, "\x1f\x30\x03\x42" },
+ { 0x1f37, "\x1f\x31\x03\x42" },
+ { 0x1f38, "\x03\x99\x03\x13" },
+ { 0x1f39, "\x03\x99\x03\x14" },
+ { 0x1f3a, "\x1f\x38\x03\x00" },
+ { 0x1f3b, "\x1f\x39\x03\x00" },
+ { 0x1f3c, "\x1f\x38\x03\x01" },
+ { 0x1f3d, "\x1f\x39\x03\x01" },
+ { 0x1f3e, "\x1f\x38\x03\x42" },
+ { 0x1f3f, "\x1f\x39\x03\x42" },
+ { 0x1f40, "\x03\xbf\x03\x13" },
+ { 0x1f41, "\x03\xbf\x03\x14" },
+ { 0x1f42, "\x1f\x40\x03\x00" },
+ { 0x1f43, "\x1f\x41\x03\x00" },
+ { 0x1f44, "\x1f\x40\x03\x01" },
+ { 0x1f45, "\x1f\x41\x03\x01" },
+ { 0x1f48, "\x03\x9f\x03\x13" },
+ { 0x1f49, "\x03\x9f\x03\x14" },
+ { 0x1f4a, "\x1f\x48\x03\x00" },
+ { 0x1f4b, "\x1f\x49\x03\x00" },
+ { 0x1f4c, "\x1f\x48\x03\x01" },
+ { 0x1f4d, "\x1f\x49\x03\x01" },
+ { 0x1f50, "\x03\xc5\x03\x13" },
+ { 0x1f51, "\x03\xc5\x03\x14" },
+ { 0x1f52, "\x1f\x50\x03\x00" },
+ { 0x1f53, "\x1f\x51\x03\x00" },
+ { 0x1f54, "\x1f\x50\x03\x01" },
+ { 0x1f55, "\x1f\x51\x03\x01" },
+ { 0x1f56, "\x1f\x50\x03\x42" },
+ { 0x1f57, "\x1f\x51\x03\x42" },
+ { 0x1f59, "\x03\xa5\x03\x14" },
+ { 0x1f5b, "\x1f\x59\x03\x00" },
+ { 0x1f5d, "\x1f\x59\x03\x01" },
+ { 0x1f5f, "\x1f\x59\x03\x42" },
+ { 0x1f60, "\x03\xc9\x03\x13" },
+ { 0x1f61, "\x03\xc9\x03\x14" },
+ { 0x1f62, "\x1f\x60\x03\x00" },
+ { 0x1f63, "\x1f\x61\x03\x00" },
+ { 0x1f64, "\x1f\x60\x03\x01" },
+ { 0x1f65, "\x1f\x61\x03\x01" },
+ { 0x1f66, "\x1f\x60\x03\x42" },
+ { 0x1f67, "\x1f\x61\x03\x42" },
+ { 0x1f68, "\x03\xa9\x03\x13" },
+ { 0x1f69, "\x03\xa9\x03\x14" },
+ { 0x1f6a, "\x1f\x68\x03\x00" },
+ { 0x1f6b, "\x1f\x69\x03\x00" },
+ { 0x1f6c, "\x1f\x68\x03\x01" },
+ { 0x1f6d, "\x1f\x69\x03\x01" },
+ { 0x1f6e, "\x1f\x68\x03\x42" },
+ { 0x1f6f, "\x1f\x69\x03\x42" },
+ { 0x1f70, "\x03\xb1\x03\x00" },
+ { 0x1f71, "\x03\xac" },
+ { 0x1f72, "\x03\xb5\x03\x00" },
+ { 0x1f73, "\x03\xad" },
+ { 0x1f74, "\x03\xb7\x03\x00" },
+ { 0x1f75, "\x03\xae" },
+ { 0x1f76, "\x03\xb9\x03\x00" },
+ { 0x1f77, "\x03\xaf" },
+ { 0x1f78, "\x03\xbf\x03\x00" },
+ { 0x1f79, "\x03\xcc" },
+ { 0x1f7a, "\x03\xc5\x03\x00" },
+ { 0x1f7b, "\x03\xcd" },
+ { 0x1f7c, "\x03\xc9\x03\x00" },
+ { 0x1f7d, "\x03\xce" },
+ { 0x1f80, "\x1f\x00\x03\x45" },
+ { 0x1f81, "\x1f\x01\x03\x45" },
+ { 0x1f82, "\x1f\x02\x03\x45" },
+ { 0x1f83, "\x1f\x03\x03\x45" },
+ { 0x1f84, "\x1f\x04\x03\x45" },
+ { 0x1f85, "\x1f\x05\x03\x45" },
+ { 0x1f86, "\x1f\x06\x03\x45" },
+ { 0x1f87, "\x1f\x07\x03\x45" },
+ { 0x1f88, "\x1f\x08\x03\x45" },
+ { 0x1f89, "\x1f\x09\x03\x45" },
+ { 0x1f8a, "\x1f\x0a\x03\x45" },
+ { 0x1f8b, "\x1f\x0b\x03\x45" },
+ { 0x1f8c, "\x1f\x0c\x03\x45" },
+ { 0x1f8d, "\x1f\x0d\x03\x45" },
+ { 0x1f8e, "\x1f\x0e\x03\x45" },
+ { 0x1f8f, "\x1f\x0f\x03\x45" },
+ { 0x1f90, "\x1f\x20\x03\x45" },
+ { 0x1f91, "\x1f\x21\x03\x45" },
+ { 0x1f92, "\x1f\x22\x03\x45" },
+ { 0x1f93, "\x1f\x23\x03\x45" },
+ { 0x1f94, "\x1f\x24\x03\x45" },
+ { 0x1f95, "\x1f\x25\x03\x45" },
+ { 0x1f96, "\x1f\x26\x03\x45" },
+ { 0x1f97, "\x1f\x27\x03\x45" },
+ { 0x1f98, "\x1f\x28\x03\x45" },
+ { 0x1f99, "\x1f\x29\x03\x45" },
+ { 0x1f9a, "\x1f\x2a\x03\x45" },
+ { 0x1f9b, "\x1f\x2b\x03\x45" },
+ { 0x1f9c, "\x1f\x2c\x03\x45" },
+ { 0x1f9d, "\x1f\x2d\x03\x45" },
+ { 0x1f9e, "\x1f\x2e\x03\x45" },
+ { 0x1f9f, "\x1f\x2f\x03\x45" },
+ { 0x1fa0, "\x1f\x60\x03\x45" },
+ { 0x1fa1, "\x1f\x61\x03\x45" },
+ { 0x1fa2, "\x1f\x62\x03\x45" },
+ { 0x1fa3, "\x1f\x63\x03\x45" },
+ { 0x1fa4, "\x1f\x64\x03\x45" },
+ { 0x1fa5, "\x1f\x65\x03\x45" },
+ { 0x1fa6, "\x1f\x66\x03\x45" },
+ { 0x1fa7, "\x1f\x67\x03\x45" },
+ { 0x1fa8, "\x1f\x68\x03\x45" },
+ { 0x1fa9, "\x1f\x69\x03\x45" },
+ { 0x1faa, "\x1f\x6a\x03\x45" },
+ { 0x1fab, "\x1f\x6b\x03\x45" },
+ { 0x1fac, "\x1f\x6c\x03\x45" },
+ { 0x1fad, "\x1f\x6d\x03\x45" },
+ { 0x1fae, "\x1f\x6e\x03\x45" },
+ { 0x1faf, "\x1f\x6f\x03\x45" },
+ { 0x1fb0, "\x03\xb1\x03\x06" },
+ { 0x1fb1, "\x03\xb1\x03\x04" },
+ { 0x1fb2, "\x1f\x70\x03\x45" },
+ { 0x1fb3, "\x03\xb1\x03\x45" },
+ { 0x1fb4, "\x03\xac\x03\x45" },
+ { 0x1fb6, "\x03\xb1\x03\x42" },
+ { 0x1fb7, "\x1f\xb6\x03\x45" },
+ { 0x1fb8, "\x03\x91\x03\x06" },
+ { 0x1fb9, "\x03\x91\x03\x04" },
+ { 0x1fba, "\x03\x91\x03\x00" },
+ { 0x1fbb, "\x03\x86" },
+ { 0x1fbc, "\x03\x91\x03\x45" },
+ { 0x1fbe, "\x03\xb9" },
+ { 0x1fc1, "\x00\xa8\x03\x42" },
+ { 0x1fc2, "\x1f\x74\x03\x45" },
+ { 0x1fc3, "\x03\xb7\x03\x45" },
+ { 0x1fc4, "\x03\xae\x03\x45" },
+ { 0x1fc6, "\x03\xb7\x03\x42" },
+ { 0x1fc7, "\x1f\xc6\x03\x45" },
+ { 0x1fc8, "\x03\x95\x03\x00" },
+ { 0x1fc9, "\x03\x88" },
+ { 0x1fca, "\x03\x97\x03\x00" },
+ { 0x1fcb, "\x03\x89" },
+ { 0x1fcc, "\x03\x97\x03\x45" },
+ { 0x1fcd, "\x1f\xbf\x03\x00" },
+ { 0x1fce, "\x1f\xbf\x03\x01" },
+ { 0x1fcf, "\x1f\xbf\x03\x42" },
+ { 0x1fd0, "\x03\xb9\x03\x06" },
+ { 0x1fd1, "\x03\xb9\x03\x04" },
+ { 0x1fd2, "\x03\xca\x03\x00" },
+ { 0x1fd3, "\x03\x90" },
+ { 0x1fd6, "\x03\xb9\x03\x42" },
+ { 0x1fd7, "\x03\xca\x03\x42" },
+ { 0x1fd8, "\x03\x99\x03\x06" },
+ { 0x1fd9, "\x03\x99\x03\x04" },
+ { 0x1fda, "\x03\x99\x03\x00" },
+ { 0x1fdb, "\x03\x8a" },
+ { 0x1fdd, "\x1f\xfe\x03\x00" },
+ { 0x1fde, "\x1f\xfe\x03\x01" },
+ { 0x1fdf, "\x1f\xfe\x03\x42" },
+ { 0x1fe0, "\x03\xc5\x03\x06" },
+ { 0x1fe1, "\x03\xc5\x03\x04" },
+ { 0x1fe2, "\x03\xcb\x03\x00" },
+ { 0x1fe3, "\x03\xb0" },
+ { 0x1fe4, "\x03\xc1\x03\x13" },
+ { 0x1fe5, "\x03\xc1\x03\x14" },
+ { 0x1fe6, "\x03\xc5\x03\x42" },
+ { 0x1fe7, "\x03\xcb\x03\x42" },
+ { 0x1fe8, "\x03\xa5\x03\x06" },
+ { 0x1fe9, "\x03\xa5\x03\x04" },
+ { 0x1fea, "\x03\xa5\x03\x00" },
+ { 0x1feb, "\x03\x8e" },
+ { 0x1fec, "\x03\xa1\x03\x14" },
+ { 0x1fed, "\x00\xa8\x03\x00" },
+ { 0x1fee, "\x03\x85" },
+ { 0x1fef, "\x00\x60" },
+ { 0x1ff2, "\x1f\x7c\x03\x45" },
+ { 0x1ff3, "\x03\xc9\x03\x45" },
+ { 0x1ff4, "\x03\xce\x03\x45" },
+ { 0x1ff6, "\x03\xc9\x03\x42" },
+ { 0x1ff7, "\x1f\xf6\x03\x45" },
+ { 0x1ff8, "\x03\x9f\x03\x00" },
+ { 0x1ff9, "\x03\x8c" },
+ { 0x1ffa, "\x03\xa9\x03\x00" },
+ { 0x1ffb, "\x03\x8f" },
+ { 0x1ffc, "\x03\xa9\x03\x45" },
+ { 0x1ffd, "\x00\xb4" },
+ { 0x2000, "\x20\x02" },
+ { 0x2001, "\x20\x03" },
+ { 0x2126, "\x03\xa9" },
+ { 0x212a, "\x00\x4b" },
+ { 0x212b, "\x00\xc5" },
+ { 0x219a, "\x21\x90\x03\x38" },
+ { 0x219b, "\x21\x92\x03\x38" },
+ { 0x21ae, "\x21\x94\x03\x38" },
+ { 0x21cd, "\x21\xd0\x03\x38" },
+ { 0x21ce, "\x21\xd4\x03\x38" },
+ { 0x21cf, "\x21\xd2\x03\x38" },
+ { 0x2204, "\x22\x03\x03\x38" },
+ { 0x2209, "\x22\x08\x03\x38" },
+ { 0x220c, "\x22\x0b\x03\x38" },
+ { 0x2224, "\x22\x23\x03\x38" },
+ { 0x2226, "\x22\x25\x03\x38" },
+ { 0x2241, "\x22\x3c\x03\x38" },
+ { 0x2244, "\x22\x43\x03\x38" },
+ { 0x2247, "\x22\x45\x03\x38" },
+ { 0x2249, "\x22\x48\x03\x38" },
+ { 0x2260, "\x00\x3d\x03\x38" },
+ { 0x2262, "\x22\x61\x03\x38" },
+ { 0x226d, "\x22\x4d\x03\x38" },
+ { 0x226e, "\x00\x3c\x03\x38" },
+ { 0x226f, "\x00\x3e\x03\x38" },
+ { 0x2270, "\x22\x64\x03\x38" },
+ { 0x2271, "\x22\x65\x03\x38" },
+ { 0x2274, "\x22\x72\x03\x38" },
+ { 0x2275, "\x22\x73\x03\x38" },
+ { 0x2278, "\x22\x76\x03\x38" },
+ { 0x2279, "\x22\x77\x03\x38" },
+ { 0x2280, "\x22\x7a\x03\x38" },
+ { 0x2281, "\x22\x7b\x03\x38" },
+ { 0x2284, "\x22\x82\x03\x38" },
+ { 0x2285, "\x22\x83\x03\x38" },
+ { 0x2288, "\x22\x86\x03\x38" },
+ { 0x2289, "\x22\x87\x03\x38" },
+ { 0x22ac, "\x22\xa2\x03\x38" },
+ { 0x22ad, "\x22\xa8\x03\x38" },
+ { 0x22ae, "\x22\xa9\x03\x38" },
+ { 0x22af, "\x22\xab\x03\x38" },
+ { 0x22e0, "\x22\x7c\x03\x38" },
+ { 0x22e1, "\x22\x7d\x03\x38" },
+ { 0x22e2, "\x22\x91\x03\x38" },
+ { 0x22e3, "\x22\x92\x03\x38" },
+ { 0x22ea, "\x22\xb2\x03\x38" },
+ { 0x22eb, "\x22\xb3\x03\x38" },
+ { 0x22ec, "\x22\xb4\x03\x38" },
+ { 0x22ed, "\x22\xb5\x03\x38" },
+ { 0x2329, "\x30\x08" },
+ { 0x232a, "\x30\x09" },
+ { 0x304c, "\x30\x4b\x30\x99" },
+ { 0x304e, "\x30\x4d\x30\x99" },
+ { 0x3050, "\x30\x4f\x30\x99" },
+ { 0x3052, "\x30\x51\x30\x99" },
+ { 0x3054, "\x30\x53\x30\x99" },
+ { 0x3056, "\x30\x55\x30\x99" },
+ { 0x3058, "\x30\x57\x30\x99" },
+ { 0x305a, "\x30\x59\x30\x99" },
+ { 0x305c, "\x30\x5b\x30\x99" },
+ { 0x305e, "\x30\x5d\x30\x99" },
+ { 0x3060, "\x30\x5f\x30\x99" },
+ { 0x3062, "\x30\x61\x30\x99" },
+ { 0x3065, "\x30\x64\x30\x99" },
+ { 0x3067, "\x30\x66\x30\x99" },
+ { 0x3069, "\x30\x68\x30\x99" },
+ { 0x3070, "\x30\x6f\x30\x99" },
+ { 0x3071, "\x30\x6f\x30\x9a" },
+ { 0x3073, "\x30\x72\x30\x99" },
+ { 0x3074, "\x30\x72\x30\x9a" },
+ { 0x3076, "\x30\x75\x30\x99" },
+ { 0x3077, "\x30\x75\x30\x9a" },
+ { 0x3079, "\x30\x78\x30\x99" },
+ { 0x307a, "\x30\x78\x30\x9a" },
+ { 0x307c, "\x30\x7b\x30\x99" },
+ { 0x307d, "\x30\x7b\x30\x9a" },
+ { 0x3094, "\x30\x46\x30\x99" },
+ { 0x309e, "\x30\x9d\x30\x99" },
+ { 0x30ac, "\x30\xab\x30\x99" },
+ { 0x30ae, "\x30\xad\x30\x99" },
+ { 0x30b0, "\x30\xaf\x30\x99" },
+ { 0x30b2, "\x30\xb1\x30\x99" },
+ { 0x30b4, "\x30\xb3\x30\x99" },
+ { 0x30b6, "\x30\xb5\x30\x99" },
+ { 0x30b8, "\x30\xb7\x30\x99" },
+ { 0x30ba, "\x30\xb9\x30\x99" },
+ { 0x30bc, "\x30\xbb\x30\x99" },
+ { 0x30be, "\x30\xbd\x30\x99" },
+ { 0x30c0, "\x30\xbf\x30\x99" },
+ { 0x30c2, "\x30\xc1\x30\x99" },
+ { 0x30c5, "\x30\xc4\x30\x99" },
+ { 0x30c7, "\x30\xc6\x30\x99" },
+ { 0x30c9, "\x30\xc8\x30\x99" },
+ { 0x30d0, "\x30\xcf\x30\x99" },
+ { 0x30d1, "\x30\xcf\x30\x9a" },
+ { 0x30d3, "\x30\xd2\x30\x99" },
+ { 0x30d4, "\x30\xd2\x30\x9a" },
+ { 0x30d6, "\x30\xd5\x30\x99" },
+ { 0x30d7, "\x30\xd5\x30\x9a" },
+ { 0x30d9, "\x30\xd8\x30\x99" },
+ { 0x30da, "\x30\xd8\x30\x9a" },
+ { 0x30dc, "\x30\xdb\x30\x99" },
+ { 0x30dd, "\x30\xdb\x30\x9a" },
+ { 0x30f4, "\x30\xa6\x30\x99" },
+ { 0x30f7, "\x30\xef\x30\x99" },
+ { 0x30f8, "\x30\xf0\x30\x99" },
+ { 0x30f9, "\x30\xf1\x30\x99" },
+ { 0x30fa, "\x30\xf2\x30\x99" },
+ { 0x30fe, "\x30\xfd\x30\x99" },
+ { 0xf900, "\x8c\x48" },
+ { 0xf901, "\x66\xf4" },
+ { 0xf902, "\x8e\xca" },
+ { 0xf903, "\x8c\xc8" },
+ { 0xf904, "\x6e\xd1" },
+ { 0xf905, "\x4e\x32" },
+ { 0xf906, "\x53\xe5" },
+ { 0xf907, "\x9f\x9c" },
+ { 0xf908, "\x9f\x9c" },
+ { 0xf909, "\x59\x51" },
+ { 0xf90a, "\x91\xd1" },
+ { 0xf90b, "\x55\x87" },
+ { 0xf90c, "\x59\x48" },
+ { 0xf90d, "\x61\xf6" },
+ { 0xf90e, "\x76\x69" },
+ { 0xf90f, "\x7f\x85" },
+ { 0xf910, "\x86\x3f" },
+ { 0xf911, "\x87\xba" },
+ { 0xf912, "\x88\xf8" },
+ { 0xf913, "\x90\x8f" },
+ { 0xf914, "\x6a\x02" },
+ { 0xf915, "\x6d\x1b" },
+ { 0xf916, "\x70\xd9" },
+ { 0xf917, "\x73\xde" },
+ { 0xf918, "\x84\x3d" },
+ { 0xf919, "\x91\x6a" },
+ { 0xf91a, "\x99\xf1" },
+ { 0xf91b, "\x4e\x82" },
+ { 0xf91c, "\x53\x75" },
+ { 0xf91d, "\x6b\x04" },
+ { 0xf91e, "\x72\x1b" },
+ { 0xf91f, "\x86\x2d" },
+ { 0xf920, "\x9e\x1e" },
+ { 0xf921, "\x5d\x50" },
+ { 0xf922, "\x6f\xeb" },
+ { 0xf923, "\x85\xcd" },
+ { 0xf924, "\x89\x64" },
+ { 0xf925, "\x62\xc9" },
+ { 0xf926, "\x81\xd8" },
+ { 0xf927, "\x88\x1f" },
+ { 0xf928, "\x5e\xca" },
+ { 0xf929, "\x67\x17" },
+ { 0xf92a, "\x6d\x6a" },
+ { 0xf92b, "\x72\xfc" },
+ { 0xf92c, "\x90\xce" },
+ { 0xf92d, "\x4f\x86" },
+ { 0xf92e, "\x51\xb7" },
+ { 0xf92f, "\x52\xde" },
+ { 0xf930, "\x64\xc4" },
+ { 0xf931, "\x6a\xd3" },
+ { 0xf932, "\x72\x10" },
+ { 0xf933, "\x76\xe7" },
+ { 0xf934, "\x80\x01" },
+ { 0xf935, "\x86\x06" },
+ { 0xf936, "\x86\x5c" },
+ { 0xf937, "\x8d\xef" },
+ { 0xf938, "\x97\x32" },
+ { 0xf939, "\x9b\x6f" },
+ { 0xf93a, "\x9d\xfa" },
+ { 0xf93b, "\x78\x8c" },
+ { 0xf93c, "\x79\x7f" },
+ { 0xf93d, "\x7d\xa0" },
+ { 0xf93e, "\x83\xc9" },
+ { 0xf93f, "\x93\x04" },
+ { 0xf940, "\x9e\x7f" },
+ { 0xf941, "\x8a\xd6" },
+ { 0xf942, "\x58\xdf" },
+ { 0xf943, "\x5f\x04" },
+ { 0xf944, "\x7c\x60" },
+ { 0xf945, "\x80\x7e" },
+ { 0xf946, "\x72\x62" },
+ { 0xf947, "\x78\xca" },
+ { 0xf948, "\x8c\xc2" },
+ { 0xf949, "\x96\xf7" },
+ { 0xf94a, "\x58\xd8" },
+ { 0xf94b, "\x5c\x62" },
+ { 0xf94c, "\x6a\x13" },
+ { 0xf94d, "\x6d\xda" },
+ { 0xf94e, "\x6f\x0f" },
+ { 0xf94f, "\x7d\x2f" },
+ { 0xf950, "\x7e\x37" },
+ { 0xf951, "\x96\xfb" },
+ { 0xf952, "\x52\xd2" },
+ { 0xf953, "\x80\x8b" },
+ { 0xf954, "\x51\xdc" },
+ { 0xf955, "\x51\xcc" },
+ { 0xf956, "\x7a\x1c" },
+ { 0xf957, "\x7d\xbe" },
+ { 0xf958, "\x83\xf1" },
+ { 0xf959, "\x96\x75" },
+ { 0xf95a, "\x8b\x80" },
+ { 0xf95b, "\x62\xcf" },
+ { 0xf95c, "\x6a\x02" },
+ { 0xf95d, "\x8a\xfe" },
+ { 0xf95e, "\x4e\x39" },
+ { 0xf95f, "\x5b\xe7" },
+ { 0xf960, "\x60\x12" },
+ { 0xf961, "\x73\x87" },
+ { 0xf962, "\x75\x70" },
+ { 0xf963, "\x53\x17" },
+ { 0xf964, "\x78\xfb" },
+ { 0xf965, "\x4f\xbf" },
+ { 0xf966, "\x5f\xa9" },
+ { 0xf967, "\x4e\x0d" },
+ { 0xf968, "\x6c\xcc" },
+ { 0xf969, "\x65\x78" },
+ { 0xf96a, "\x7d\x22" },
+ { 0xf96b, "\x53\xc3" },
+ { 0xf96c, "\x58\x5e" },
+ { 0xf96d, "\x77\x01" },
+ { 0xf96e, "\x84\x49" },
+ { 0xf96f, "\x8a\xaa" },
+ { 0xf970, "\x6b\xba" },
+ { 0xf971, "\x8f\xb0" },
+ { 0xf972, "\x6c\x88" },
+ { 0xf973, "\x62\xfe" },
+ { 0xf974, "\x82\xe5" },
+ { 0xf975, "\x63\xa0" },
+ { 0xf976, "\x75\x65" },
+ { 0xf977, "\x4e\xae" },
+ { 0xf978, "\x51\x69" },
+ { 0xf979, "\x51\xc9" },
+ { 0xf97a, "\x68\x81" },
+ { 0xf97b, "\x7c\xe7" },
+ { 0xf97c, "\x82\x6f" },
+ { 0xf97d, "\x8a\xd2" },
+ { 0xf97e, "\x91\xcf" },
+ { 0xf97f, "\x52\xf5" },
+ { 0xf980, "\x54\x42" },
+ { 0xf981, "\x59\x73" },
+ { 0xf982, "\x5e\xec" },
+ { 0xf983, "\x65\xc5" },
+ { 0xf984, "\x6f\xfe" },
+ { 0xf985, "\x79\x2a" },
+ { 0xf986, "\x95\xad" },
+ { 0xf987, "\x9a\x6a" },
+ { 0xf988, "\x9e\x97" },
+ { 0xf989, "\x9e\xce" },
+ { 0xf98a, "\x52\x9b" },
+ { 0xf98b, "\x66\xc6" },
+ { 0xf98c, "\x6b\x77" },
+ { 0xf98d, "\x8f\x62" },
+ { 0xf98e, "\x5e\x74" },
+ { 0xf98f, "\x61\x90" },
+ { 0xf990, "\x62\x00" },
+ { 0xf991, "\x64\x9a" },
+ { 0xf992, "\x6f\x23" },
+ { 0xf993, "\x71\x49" },
+ { 0xf994, "\x74\x89" },
+ { 0xf995, "\x79\xca" },
+ { 0xf996, "\x7d\xf4" },
+ { 0xf997, "\x80\x6f" },
+ { 0xf998, "\x8f\x26" },
+ { 0xf999, "\x84\xee" },
+ { 0xf99a, "\x90\x23" },
+ { 0xf99b, "\x93\x4a" },
+ { 0xf99c, "\x52\x17" },
+ { 0xf99d, "\x52\xa3" },
+ { 0xf99e, "\x54\xbd" },
+ { 0xf99f, "\x70\xc8" },
+ { 0xf9a0, "\x88\xc2" },
+ { 0xf9a1, "\x8a\xaa" },
+ { 0xf9a2, "\x5e\xc9" },
+ { 0xf9a3, "\x5f\xf5" },
+ { 0xf9a4, "\x63\x7b" },
+ { 0xf9a5, "\x6b\xae" },
+ { 0xf9a6, "\x7c\x3e" },
+ { 0xf9a7, "\x73\x75" },
+ { 0xf9a8, "\x4e\xe4" },
+ { 0xf9a9, "\x56\xf9" },
+ { 0xf9aa, "\x5b\xe7" },
+ { 0xf9ab, "\x5d\xba" },
+ { 0xf9ac, "\x60\x1c" },
+ { 0xf9ad, "\x73\xb2" },
+ { 0xf9ae, "\x74\x69" },
+ { 0xf9af, "\x7f\x9a" },
+ { 0xf9b0, "\x80\x46" },
+ { 0xf9b1, "\x92\x34" },
+ { 0xf9b2, "\x96\xf6" },
+ { 0xf9b3, "\x97\x48" },
+ { 0xf9b4, "\x98\x18" },
+ { 0xf9b5, "\x4f\x8b" },
+ { 0xf9b6, "\x79\xae" },
+ { 0xf9b7, "\x91\xb4" },
+ { 0xf9b8, "\x96\xb8" },
+ { 0xf9b9, "\x60\xe1" },
+ { 0xf9ba, "\x4e\x86" },
+ { 0xf9bb, "\x50\xda" },
+ { 0xf9bc, "\x5b\xee" },
+ { 0xf9bd, "\x5c\x3f" },
+ { 0xf9be, "\x65\x99" },
+ { 0xf9bf, "\x6a\x02" },
+ { 0xf9c0, "\x71\xce" },
+ { 0xf9c1, "\x76\x42" },
+ { 0xf9c2, "\x84\xfc" },
+ { 0xf9c3, "\x90\x7c" },
+ { 0xf9c4, "\x9f\x8d" },
+ { 0xf9c5, "\x66\x88" },
+ { 0xf9c6, "\x96\x2e" },
+ { 0xf9c7, "\x52\x89" },
+ { 0xf9c8, "\x67\x7b" },
+ { 0xf9c9, "\x67\xf3" },
+ { 0xf9ca, "\x6d\x41" },
+ { 0xf9cb, "\x6e\x9c" },
+ { 0xf9cc, "\x74\x09" },
+ { 0xf9cd, "\x75\x59" },
+ { 0xf9ce, "\x78\x6b" },
+ { 0xf9cf, "\x7d\x10" },
+ { 0xf9d0, "\x98\x5e" },
+ { 0xf9d1, "\x51\x6d" },
+ { 0xf9d2, "\x62\x2e" },
+ { 0xf9d3, "\x96\x78" },
+ { 0xf9d4, "\x50\x2b" },
+ { 0xf9d5, "\x5d\x19" },
+ { 0xf9d6, "\x6d\xea" },
+ { 0xf9d7, "\x8f\x2a" },
+ { 0xf9d8, "\x5f\x8b" },
+ { 0xf9d9, "\x61\x44" },
+ { 0xf9da, "\x68\x17" },
+ { 0xf9db, "\x73\x87" },
+ { 0xf9dc, "\x96\x86" },
+ { 0xf9dd, "\x52\x29" },
+ { 0xf9de, "\x54\x0f" },
+ { 0xf9df, "\x5c\x65" },
+ { 0xf9e0, "\x66\x13" },
+ { 0xf9e1, "\x67\x4e" },
+ { 0xf9e2, "\x68\xa8" },
+ { 0xf9e3, "\x6c\xe5" },
+ { 0xf9e4, "\x74\x06" },
+ { 0xf9e5, "\x75\xe2" },
+ { 0xf9e6, "\x7f\x79" },
+ { 0xf9e7, "\x88\xcf" },
+ { 0xf9e8, "\x88\xe1" },
+ { 0xf9e9, "\x91\xcc" },
+ { 0xf9ea, "\x96\xe2" },
+ { 0xf9eb, "\x53\x3f" },
+ { 0xf9ec, "\x6e\xba" },
+ { 0xf9ed, "\x54\x1d" },
+ { 0xf9ee, "\x71\xd0" },
+ { 0xf9ef, "\x74\x98" },
+ { 0xf9f0, "\x85\xfa" },
+ { 0xf9f1, "\x96\xa3" },
+ { 0xf9f2, "\x9c\x57" },
+ { 0xf9f3, "\x9e\x9f" },
+ { 0xf9f4, "\x67\x97" },
+ { 0xf9f5, "\x6d\xcb" },
+ { 0xf9f6, "\x81\xe8" },
+ { 0xf9f7, "\x7a\xcb" },
+ { 0xf9f8, "\x7b\x20" },
+ { 0xf9f9, "\x7c\x92" },
+ { 0xf9fa, "\x72\xc0" },
+ { 0xf9fb, "\x70\x99" },
+ { 0xf9fc, "\x8b\x58" },
+ { 0xf9fd, "\x4e\xc0" },
+ { 0xf9fe, "\x83\x36" },
+ { 0xf9ff, "\x52\x3a" },
+ { 0xfa00, "\x52\x07" },
+ { 0xfa01, "\x5e\xa6" },
+ { 0xfa02, "\x62\xd3" },
+ { 0xfa03, "\x7c\xd6" },
+ { 0xfa04, "\x5b\x85" },
+ { 0xfa05, "\x6d\x1e" },
+ { 0xfa06, "\x66\xb4" },
+ { 0xfa07, "\x8f\x3b" },
+ { 0xfa08, "\x88\x4c" },
+ { 0xfa09, "\x96\x4d" },
+ { 0xfa0a, "\x89\x8b" },
+ { 0xfa0b, "\x5e\xd3" },
+ { 0xfa0c, "\x51\x40" },
+ { 0xfa0d, "\x55\xc0" },
+ { 0xfa10, "\x58\x5a" },
+ { 0xfa12, "\x66\x74" },
+ { 0xfa15, "\x51\xde" },
+ { 0xfa16, "\x73\x2a" },
+ { 0xfa17, "\x76\xca" },
+ { 0xfa18, "\x79\x3c" },
+ { 0xfa19, "\x79\x5e" },
+ { 0xfa1a, "\x79\x65" },
+ { 0xfa1b, "\x79\x8f" },
+ { 0xfa1c, "\x97\x56" },
+ { 0xfa1d, "\x7c\xbe" },
+ { 0xfa1e, "\x7f\xbd" },
+ { 0xfa20, "\x86\x12" },
+ { 0xfa22, "\x8a\xf8" },
+ { 0xfa25, "\x90\x38" },
+ { 0xfa26, "\x90\xfd" },
+ { 0xfa2a, "\x98\xef" },
+ { 0xfa2b, "\x98\xfc" },
+ { 0xfa2c, "\x99\x28" },
+ { 0xfa2d, "\x9d\xb4" },
+ { 0xfb1d, "\x05\xd9\x05\xb4" },
+ { 0xfb1f, "\x05\xf2\x05\xb7" },
+ { 0xfb2a, "\x05\xe9\x05\xc1" },
+ { 0xfb2b, "\x05\xe9\x05\xc2" },
+ { 0xfb2c, "\xfb\x49\x05\xc1" },
+ { 0xfb2d, "\xfb\x49\x05\xc2" },
+ { 0xfb2e, "\x05\xd0\x05\xb7" },
+ { 0xfb2f, "\x05\xd0\x05\xb8" },
+ { 0xfb30, "\x05\xd0\x05\xbc" },
+ { 0xfb31, "\x05\xd1\x05\xbc" },
+ { 0xfb32, "\x05\xd2\x05\xbc" },
+ { 0xfb33, "\x05\xd3\x05\xbc" },
+ { 0xfb34, "\x05\xd4\x05\xbc" },
+ { 0xfb35, "\x05\xd5\x05\xbc" },
+ { 0xfb36, "\x05\xd6\x05\xbc" },
+ { 0xfb38, "\x05\xd8\x05\xbc" },
+ { 0xfb39, "\x05\xd9\x05\xbc" },
+ { 0xfb3a, "\x05\xda\x05\xbc" },
+ { 0xfb3b, "\x05\xdb\x05\xbc" },
+ { 0xfb3c, "\x05\xdc\x05\xbc" },
+ { 0xfb3e, "\x05\xde\x05\xbc" },
+ { 0xfb40, "\x05\xe0\x05\xbc" },
+ { 0xfb41, "\x05\xe1\x05\xbc" },
+ { 0xfb43, "\x05\xe3\x05\xbc" },
+ { 0xfb44, "\x05\xe4\x05\xbc" },
+ { 0xfb46, "\x05\xe6\x05\xbc" },
+ { 0xfb47, "\x05\xe7\x05\xbc" },
+ { 0xfb48, "\x05\xe8\x05\xbc" },
+ { 0xfb49, "\x05\xe9\x05\xbc" },
+ { 0xfb4a, "\x05\xea\x05\xbc" },
+ { 0xfb4b, "\x05\xd5\x05\xb9" },
+ { 0xfb4c, "\x05\xd1\x05\xbf" },
+ { 0xfb4d, "\x05\xdb\x05\xbf" },
+ { 0xfb4e, "\x05\xe4\x05\xbf" }
+};
+
+static const decomp_entry full_decomposition[] =
+{
+ { 0x00a0, "\x00\x20" },
+ { 0x00a8, "\x00\x20\x03\x08" },
+ { 0x00aa, "\x00\x61" },
+ { 0x00af, "\x00\x20\x03\x04" },
+ { 0x00b2, "\x00\x32" },
+ { 0x00b3, "\x00\x33" },
+ { 0x00b4, "\x00\x20\x03\x01" },
+ { 0x00b5, "\x03\xbc" },
+ { 0x00b8, "\x00\x20\x03\x27" },
+ { 0x00b9, "\x00\x31" },
+ { 0x00ba, "\x00\x6f" },
+ { 0x00bc, "\x00\x31\x20\x44\x00\x34" },
+ { 0x00bd, "\x00\x31\x20\x44\x00\x32" },
+ { 0x00be, "\x00\x33\x20\x44\x00\x34" },
+ { 0x0132, "\x00\x49\x00\x4a" },
+ { 0x0133, "\x00\x69\x00\x6a" },
+ { 0x013f, "\x00\x4c\x00\xb7" },
+ { 0x0140, "\x00\x6c\x00\xb7" },
+ { 0x0149, "\x02\xbc\x00\x6e" },
+ { 0x017f, "\x00\x73" },
+ { 0x01c4, "\x00\x44\x01\x7d" },
+ { 0x01c5, "\x00\x44\x01\x7e" },
+ { 0x01c6, "\x00\x64\x01\x7e" },
+ { 0x01c7, "\x00\x4c\x00\x4a" },
+ { 0x01c8, "\x00\x4c\x00\x6a" },
+ { 0x01c9, "\x00\x6c\x00\x6a" },
+ { 0x01ca, "\x00\x4e\x00\x4a" },
+ { 0x01cb, "\x00\x4e\x00\x6a" },
+ { 0x01cc, "\x00\x6e\x00\x6a" },
+ { 0x01f1, "\x00\x44\x00\x5a" },
+ { 0x01f2, "\x00\x44\x00\x7a" },
+ { 0x01f3, "\x00\x64\x00\x7a" },
+ { 0x02b0, "\x00\x68" },
+ { 0x02b1, "\x02\x66" },
+ { 0x02b2, "\x00\x6a" },
+ { 0x02b3, "\x00\x72" },
+ { 0x02b4, "\x02\x79" },
+ { 0x02b5, "\x02\x7b" },
+ { 0x02b6, "\x02\x81" },
+ { 0x02b7, "\x00\x77" },
+ { 0x02b8, "\x00\x79" },
+ { 0x02d8, "\x00\x20\x03\x06" },
+ { 0x02d9, "\x00\x20\x03\x07" },
+ { 0x02da, "\x00\x20\x03\x0a" },
+ { 0x02db, "\x00\x20\x03\x28" },
+ { 0x02dc, "\x00\x20\x03\x03" },
+ { 0x02dd, "\x00\x20\x03\x0b" },
+ { 0x02e0, "\x02\x63" },
+ { 0x02e1, "\x00\x6c" },
+ { 0x02e2, "\x00\x73" },
+ { 0x02e3, "\x00\x78" },
+ { 0x02e4, "\x02\x95" },
+ { 0x037a, "\x00\x20\x03\x45" },
+ { 0x0384, "\x00\x20\x03\x01" },
+ { 0x03d0, "\x03\xb2" },
+ { 0x03d1, "\x03\xb8" },
+ { 0x03d2, "\x03\xa5" },
+ { 0x03d5, "\x03\xc6" },
+ { 0x03d6, "\x03\xc0" },
+ { 0x03f0, "\x03\xba" },
+ { 0x03f1, "\x03\xc1" },
+ { 0x03f2, "\x03\xc2" },
+ { 0x0587, "\x05\x65\x05\x82" },
+ { 0x0675, "\x06\x27\x06\x74" },
+ { 0x0676, "\x06\x48\x06\x74" },
+ { 0x0677, "\x06\xc7\x06\x74" },
+ { 0x0678, "\x06\x4a\x06\x74" },
+ { 0x0e33, "\x0e\x4d\x0e\x32" },
+ { 0x0eb3, "\x0e\xcd\x0e\xb2" },
+ { 0x0edc, "\x0e\xab\x0e\x99" },
+ { 0x0edd, "\x0e\xab\x0e\xa1" },
+ { 0x0f0c, "\x0f\x0b" },
+ { 0x0f77, "\x0f\xb2\x0f\x81" },
+ { 0x0f79, "\x0f\xb3\x0f\x81" },
+ { 0x1e9a, "\x00\x61\x02\xbe" },
+ { 0x1fbd, "\x00\x20\x03\x13" },
+ { 0x1fbf, "\x00\x20\x03\x13" },
+ { 0x1fc0, "\x00\x20\x03\x42" },
+ { 0x1ffe, "\x00\x20\x03\x14" },
+ { 0x2002, "\x00\x20" },
+ { 0x2003, "\x00\x20" },
+ { 0x2004, "\x00\x20" },
+ { 0x2005, "\x00\x20" },
+ { 0x2006, "\x00\x20" },
+ { 0x2007, "\x00\x20" },
+ { 0x2008, "\x00\x20" },
+ { 0x2009, "\x00\x20" },
+ { 0x200a, "\x00\x20" },
+ { 0x2011, "\x20\x10" },
+ { 0x2017, "\x00\x20\x03\x33" },
+ { 0x2024, "\x00\x2e" },
+ { 0x2025, "\x00\x2e\x00\x2e" },
+ { 0x2026, "\x00\x2e\x00\x2e\x00\x2e" },
+ { 0x202f, "\x00\x20" },
+ { 0x2033, "\x20\x32\x20\x32" },
+ { 0x2034, "\x20\x32\x20\x32\x20\x32" },
+ { 0x2036, "\x20\x35\x20\x35" },
+ { 0x2037, "\x20\x35\x20\x35\x20\x35" },
+ { 0x203c, "\x00\x21\x00\x21" },
+ { 0x203e, "\x00\x20\x03\x05" },
+ { 0x2048, "\x00\x3f\x00\x21" },
+ { 0x2049, "\x00\x21\x00\x3f" },
+ { 0x2070, "\x00\x30" },
+ { 0x2074, "\x00\x34" },
+ { 0x2075, "\x00\x35" },
+ { 0x2076, "\x00\x36" },
+ { 0x2077, "\x00\x37" },
+ { 0x2078, "\x00\x38" },
+ { 0x2079, "\x00\x39" },
+ { 0x207a, "\x00\x2b" },
+ { 0x207b, "\x22\x12" },
+ { 0x207c, "\x00\x3d" },
+ { 0x207d, "\x00\x28" },
+ { 0x207e, "\x00\x29" },
+ { 0x207f, "\x00\x6e" },
+ { 0x2080, "\x00\x30" },
+ { 0x2081, "\x00\x31" },
+ { 0x2082, "\x00\x32" },
+ { 0x2083, "\x00\x33" },
+ { 0x2084, "\x00\x34" },
+ { 0x2085, "\x00\x35" },
+ { 0x2086, "\x00\x36" },
+ { 0x2087, "\x00\x37" },
+ { 0x2088, "\x00\x38" },
+ { 0x2089, "\x00\x39" },
+ { 0x208a, "\x00\x2b" },
+ { 0x208b, "\x22\x12" },
+ { 0x208c, "\x00\x3d" },
+ { 0x208d, "\x00\x28" },
+ { 0x208e, "\x00\x29" },
+ { 0x20a8, "\x00\x52\x00\x73" },
+ { 0x2100, "\x00\x61\x00\x2f\x00\x63" },
+ { 0x2101, "\x00\x61\x00\x2f\x00\x73" },
+ { 0x2102, "\x00\x43" },
+ { 0x2103, "\x00\xb0\x00\x43" },
+ { 0x2105, "\x00\x63\x00\x2f\x00\x6f" },
+ { 0x2106, "\x00\x63\x00\x2f\x00\x75" },
+ { 0x2107, "\x01\x90" },
+ { 0x2109, "\x00\xb0\x00\x46" },
+ { 0x210a, "\x00\x67" },
+ { 0x210b, "\x00\x48" },
+ { 0x210c, "\x00\x48" },
+ { 0x210d, "\x00\x48" },
+ { 0x210e, "\x00\x68" },
+ { 0x210f, "\x01\x27" },
+ { 0x2110, "\x00\x49" },
+ { 0x2111, "\x00\x49" },
+ { 0x2112, "\x00\x4c" },
+ { 0x2113, "\x00\x6c" },
+ { 0x2115, "\x00\x4e" },
+ { 0x2116, "\x00\x4e\x00\x6f" },
+ { 0x2119, "\x00\x50" },
+ { 0x211a, "\x00\x51" },
+ { 0x211b, "\x00\x52" },
+ { 0x211c, "\x00\x52" },
+ { 0x211d, "\x00\x52" },
+ { 0x2120, "\x00\x53\x00\x4d" },
+ { 0x2121, "\x00\x54\x00\x45\x00\x4c" },
+ { 0x2122, "\x00\x54\x00\x4d" },
+ { 0x2124, "\x00\x5a" },
+ { 0x2128, "\x00\x5a" },
+ { 0x212c, "\x00\x42" },
+ { 0x212d, "\x00\x43" },
+ { 0x212f, "\x00\x65" },
+ { 0x2130, "\x00\x45" },
+ { 0x2131, "\x00\x46" },
+ { 0x2133, "\x00\x4d" },
+ { 0x2134, "\x00\x6f" },
+ { 0x2135, "\x05\xd0" },
+ { 0x2136, "\x05\xd1" },
+ { 0x2137, "\x05\xd2" },
+ { 0x2138, "\x05\xd3" },
+ { 0x2139, "\x00\x69" },
+ { 0x2153, "\x00\x31\x20\x44\x00\x33" },
+ { 0x2154, "\x00\x32\x20\x44\x00\x33" },
+ { 0x2155, "\x00\x31\x20\x44\x00\x35" },
+ { 0x2156, "\x00\x32\x20\x44\x00\x35" },
+ { 0x2157, "\x00\x33\x20\x44\x00\x35" },
+ { 0x2158, "\x00\x34\x20\x44\x00\x35" },
+ { 0x2159, "\x00\x31\x20\x44\x00\x36" },
+ { 0x215a, "\x00\x35\x20\x44\x00\x36" },
+ { 0x215b, "\x00\x31\x20\x44\x00\x38" },
+ { 0x215c, "\x00\x33\x20\x44\x00\x38" },
+ { 0x215d, "\x00\x35\x20\x44\x00\x38" },
+ { 0x215e, "\x00\x37\x20\x44\x00\x38" },
+ { 0x215f, "\x00\x31\x20\x44" },
+ { 0x2160, "\x00\x49" },
+ { 0x2161, "\x00\x49\x00\x49" },
+ { 0x2162, "\x00\x49\x00\x49\x00\x49" },
+ { 0x2163, "\x00\x49\x00\x56" },
+ { 0x2164, "\x00\x56" },
+ { 0x2165, "\x00\x56\x00\x49" },
+ { 0x2166, "\x00\x56\x00\x49\x00\x49" },
+ { 0x2167, "\x00\x56\x00\x49\x00\x49\x00\x49" },
+ { 0x2168, "\x00\x49\x00\x58" },
+ { 0x2169, "\x00\x58" },
+ { 0x216a, "\x00\x58\x00\x49" },
+ { 0x216b, "\x00\x58\x00\x49\x00\x49" },
+ { 0x216c, "\x00\x4c" },
+ { 0x216d, "\x00\x43" },
+ { 0x216e, "\x00\x44" },
+ { 0x216f, "\x00\x4d" },
+ { 0x2170, "\x00\x69" },
+ { 0x2171, "\x00\x69\x00\x69" },
+ { 0x2172, "\x00\x69\x00\x69\x00\x69" },
+ { 0x2173, "\x00\x69\x00\x76" },
+ { 0x2174, "\x00\x76" },
+ { 0x2175, "\x00\x76\x00\x69" },
+ { 0x2176, "\x00\x76\x00\x69\x00\x69" },
+ { 0x2177, "\x00\x76\x00\x69\x00\x69\x00\x69" },
+ { 0x2178, "\x00\x69\x00\x78" },
+ { 0x2179, "\x00\x78" },
+ { 0x217a, "\x00\x78\x00\x69" },
+ { 0x217b, "\x00\x78\x00\x69\x00\x69" },
+ { 0x217c, "\x00\x6c" },
+ { 0x217d, "\x00\x63" },
+ { 0x217e, "\x00\x64" },
+ { 0x217f, "\x00\x6d" },
+ { 0x222c, "\x22\x2b\x22\x2b" },
+ { 0x222d, "\x22\x2b\x22\x2b\x22\x2b" },
+ { 0x222f, "\x22\x2e\x22\x2e" },
+ { 0x2230, "\x22\x2e\x22\x2e\x22\x2e" },
+ { 0x2460, "\x00\x31" },
+ { 0x2461, "\x00\x32" },
+ { 0x2462, "\x00\x33" },
+ { 0x2463, "\x00\x34" },
+ { 0x2464, "\x00\x35" },
+ { 0x2465, "\x00\x36" },
+ { 0x2466, "\x00\x37" },
+ { 0x2467, "\x00\x38" },
+ { 0x2468, "\x00\x39" },
+ { 0x2469, "\x00\x31\x00\x30" },
+ { 0x246a, "\x00\x31\x00\x31" },
+ { 0x246b, "\x00\x31\x00\x32" },
+ { 0x246c, "\x00\x31\x00\x33" },
+ { 0x246d, "\x00\x31\x00\x34" },
+ { 0x246e, "\x00\x31\x00\x35" },
+ { 0x246f, "\x00\x31\x00\x36" },
+ { 0x2470, "\x00\x31\x00\x37" },
+ { 0x2471, "\x00\x31\x00\x38" },
+ { 0x2472, "\x00\x31\x00\x39" },
+ { 0x2473, "\x00\x32\x00\x30" },
+ { 0x2474, "\x00\x28\x00\x31\x00\x29" },
+ { 0x2475, "\x00\x28\x00\x32\x00\x29" },
+ { 0x2476, "\x00\x28\x00\x33\x00\x29" },
+ { 0x2477, "\x00\x28\x00\x34\x00\x29" },
+ { 0x2478, "\x00\x28\x00\x35\x00\x29" },
+ { 0x2479, "\x00\x28\x00\x36\x00\x29" },
+ { 0x247a, "\x00\x28\x00\x37\x00\x29" },
+ { 0x247b, "\x00\x28\x00\x38\x00\x29" },
+ { 0x247c, "\x00\x28\x00\x39\x00\x29" },
+ { 0x247d, "\x00\x28\x00\x31\x00\x30\x00\x29" },
+ { 0x247e, "\x00\x28\x00\x31\x00\x31\x00\x29" },
+ { 0x247f, "\x00\x28\x00\x31\x00\x32\x00\x29" },
+ { 0x2480, "\x00\x28\x00\x31\x00\x33\x00\x29" },
+ { 0x2481, "\x00\x28\x00\x31\x00\x34\x00\x29" },
+ { 0x2482, "\x00\x28\x00\x31\x00\x35\x00\x29" },
+ { 0x2483, "\x00\x28\x00\x31\x00\x36\x00\x29" },
+ { 0x2484, "\x00\x28\x00\x31\x00\x37\x00\x29" },
+ { 0x2485, "\x00\x28\x00\x31\x00\x38\x00\x29" },
+ { 0x2486, "\x00\x28\x00\x31\x00\x39\x00\x29" },
+ { 0x2487, "\x00\x28\x00\x32\x00\x30\x00\x29" },
+ { 0x2488, "\x00\x31\x00\x2e" },
+ { 0x2489, "\x00\x32\x00\x2e" },
+ { 0x248a, "\x00\x33\x00\x2e" },
+ { 0x248b, "\x00\x34\x00\x2e" },
+ { 0x248c, "\x00\x35\x00\x2e" },
+ { 0x248d, "\x00\x36\x00\x2e" },
+ { 0x248e, "\x00\x37\x00\x2e" },
+ { 0x248f, "\x00\x38\x00\x2e" },
+ { 0x2490, "\x00\x39\x00\x2e" },
+ { 0x2491, "\x00\x31\x00\x30\x00\x2e" },
+ { 0x2492, "\x00\x31\x00\x31\x00\x2e" },
+ { 0x2493, "\x00\x31\x00\x32\x00\x2e" },
+ { 0x2494, "\x00\x31\x00\x33\x00\x2e" },
+ { 0x2495, "\x00\x31\x00\x34\x00\x2e" },
+ { 0x2496, "\x00\x31\x00\x35\x00\x2e" },
+ { 0x2497, "\x00\x31\x00\x36\x00\x2e" },
+ { 0x2498, "\x00\x31\x00\x37\x00\x2e" },
+ { 0x2499, "\x00\x31\x00\x38\x00\x2e" },
+ { 0x249a, "\x00\x31\x00\x39\x00\x2e" },
+ { 0x249b, "\x00\x32\x00\x30\x00\x2e" },
+ { 0x249c, "\x00\x28\x00\x61\x00\x29" },
+ { 0x249d, "\x00\x28\x00\x62\x00\x29" },
+ { 0x249e, "\x00\x28\x00\x63\x00\x29" },
+ { 0x249f, "\x00\x28\x00\x64\x00\x29" },
+ { 0x24a0, "\x00\x28\x00\x65\x00\x29" },
+ { 0x24a1, "\x00\x28\x00\x66\x00\x29" },
+ { 0x24a2, "\x00\x28\x00\x67\x00\x29" },
+ { 0x24a3, "\x00\x28\x00\x68\x00\x29" },
+ { 0x24a4, "\x00\x28\x00\x69\x00\x29" },
+ { 0x24a5, "\x00\x28\x00\x6a\x00\x29" },
+ { 0x24a6, "\x00\x28\x00\x6b\x00\x29" },
+ { 0x24a7, "\x00\x28\x00\x6c\x00\x29" },
+ { 0x24a8, "\x00\x28\x00\x6d\x00\x29" },
+ { 0x24a9, "\x00\x28\x00\x6e\x00\x29" },
+ { 0x24aa, "\x00\x28\x00\x6f\x00\x29" },
+ { 0x24ab, "\x00\x28\x00\x70\x00\x29" },
+ { 0x24ac, "\x00\x28\x00\x71\x00\x29" },
+ { 0x24ad, "\x00\x28\x00\x72\x00\x29" },
+ { 0x24ae, "\x00\x28\x00\x73\x00\x29" },
+ { 0x24af, "\x00\x28\x00\x74\x00\x29" },
+ { 0x24b0, "\x00\x28\x00\x75\x00\x29" },
+ { 0x24b1, "\x00\x28\x00\x76\x00\x29" },
+ { 0x24b2, "\x00\x28\x00\x77\x00\x29" },
+ { 0x24b3, "\x00\x28\x00\x78\x00\x29" },
+ { 0x24b4, "\x00\x28\x00\x79\x00\x29" },
+ { 0x24b5, "\x00\x28\x00\x7a\x00\x29" },
+ { 0x24b6, "\x00\x41" },
+ { 0x24b7, "\x00\x42" },
+ { 0x24b8, "\x00\x43" },
+ { 0x24b9, "\x00\x44" },
+ { 0x24ba, "\x00\x45" },
+ { 0x24bb, "\x00\x46" },
+ { 0x24bc, "\x00\x47" },
+ { 0x24bd, "\x00\x48" },
+ { 0x24be, "\x00\x49" },
+ { 0x24bf, "\x00\x4a" },
+ { 0x24c0, "\x00\x4b" },
+ { 0x24c1, "\x00\x4c" },
+ { 0x24c2, "\x00\x4d" },
+ { 0x24c3, "\x00\x4e" },
+ { 0x24c4, "\x00\x4f" },
+ { 0x24c5, "\x00\x50" },
+ { 0x24c6, "\x00\x51" },
+ { 0x24c7, "\x00\x52" },
+ { 0x24c8, "\x00\x53" },
+ { 0x24c9, "\x00\x54" },
+ { 0x24ca, "\x00\x55" },
+ { 0x24cb, "\x00\x56" },
+ { 0x24cc, "\x00\x57" },
+ { 0x24cd, "\x00\x58" },
+ { 0x24ce, "\x00\x59" },
+ { 0x24cf, "\x00\x5a" },
+ { 0x24d0, "\x00\x61" },
+ { 0x24d1, "\x00\x62" },
+ { 0x24d2, "\x00\x63" },
+ { 0x24d3, "\x00\x64" },
+ { 0x24d4, "\x00\x65" },
+ { 0x24d5, "\x00\x66" },
+ { 0x24d6, "\x00\x67" },
+ { 0x24d7, "\x00\x68" },
+ { 0x24d8, "\x00\x69" },
+ { 0x24d9, "\x00\x6a" },
+ { 0x24da, "\x00\x6b" },
+ { 0x24db, "\x00\x6c" },
+ { 0x24dc, "\x00\x6d" },
+ { 0x24dd, "\x00\x6e" },
+ { 0x24de, "\x00\x6f" },
+ { 0x24df, "\x00\x70" },
+ { 0x24e0, "\x00\x71" },
+ { 0x24e1, "\x00\x72" },
+ { 0x24e2, "\x00\x73" },
+ { 0x24e3, "\x00\x74" },
+ { 0x24e4, "\x00\x75" },
+ { 0x24e5, "\x00\x76" },
+ { 0x24e6, "\x00\x77" },
+ { 0x24e7, "\x00\x78" },
+ { 0x24e8, "\x00\x79" },
+ { 0x24e9, "\x00\x7a" },
+ { 0x24ea, "\x00\x30" },
+ { 0x2e9f, "\x6b\xcd" },
+ { 0x2ef3, "\x9f\x9f" },
+ { 0x2f00, "\x4e\x00" },
+ { 0x2f01, "\x4e\x28" },
+ { 0x2f02, "\x4e\x36" },
+ { 0x2f03, "\x4e\x3f" },
+ { 0x2f04, "\x4e\x59" },
+ { 0x2f05, "\x4e\x85" },
+ { 0x2f06, "\x4e\x8c" },
+ { 0x2f07, "\x4e\xa0" },
+ { 0x2f08, "\x4e\xba" },
+ { 0x2f09, "\x51\x3f" },
+ { 0x2f0a, "\x51\x65" },
+ { 0x2f0b, "\x51\x6b" },
+ { 0x2f0c, "\x51\x82" },
+ { 0x2f0d, "\x51\x96" },
+ { 0x2f0e, "\x51\xab" },
+ { 0x2f0f, "\x51\xe0" },
+ { 0x2f10, "\x51\xf5" },
+ { 0x2f11, "\x52\x00" },
+ { 0x2f12, "\x52\x9b" },
+ { 0x2f13, "\x52\xf9" },
+ { 0x2f14, "\x53\x15" },
+ { 0x2f15, "\x53\x1a" },
+ { 0x2f16, "\x53\x38" },
+ { 0x2f17, "\x53\x41" },
+ { 0x2f18, "\x53\x5c" },
+ { 0x2f19, "\x53\x69" },
+ { 0x2f1a, "\x53\x82" },
+ { 0x2f1b, "\x53\xb6" },
+ { 0x2f1c, "\x53\xc8" },
+ { 0x2f1d, "\x53\xe3" },
+ { 0x2f1e, "\x56\xd7" },
+ { 0x2f1f, "\x57\x1f" },
+ { 0x2f20, "\x58\xeb" },
+ { 0x2f21, "\x59\x02" },
+ { 0x2f22, "\x59\x0a" },
+ { 0x2f23, "\x59\x15" },
+ { 0x2f24, "\x59\x27" },
+ { 0x2f25, "\x59\x73" },
+ { 0x2f26, "\x5b\x50" },
+ { 0x2f27, "\x5b\x80" },
+ { 0x2f28, "\x5b\xf8" },
+ { 0x2f29, "\x5c\x0f" },
+ { 0x2f2a, "\x5c\x22" },
+ { 0x2f2b, "\x5c\x38" },
+ { 0x2f2c, "\x5c\x6e" },
+ { 0x2f2d, "\x5c\x71" },
+ { 0x2f2e, "\x5d\xdb" },
+ { 0x2f2f, "\x5d\xe5" },
+ { 0x2f30, "\x5d\xf1" },
+ { 0x2f31, "\x5d\xfe" },
+ { 0x2f32, "\x5e\x72" },
+ { 0x2f33, "\x5e\x7a" },
+ { 0x2f34, "\x5e\x7f" },
+ { 0x2f35, "\x5e\xf4" },
+ { 0x2f36, "\x5e\xfe" },
+ { 0x2f37, "\x5f\x0b" },
+ { 0x2f38, "\x5f\x13" },
+ { 0x2f39, "\x5f\x50" },
+ { 0x2f3a, "\x5f\x61" },
+ { 0x2f3b, "\x5f\x73" },
+ { 0x2f3c, "\x5f\xc3" },
+ { 0x2f3d, "\x62\x08" },
+ { 0x2f3e, "\x62\x36" },
+ { 0x2f3f, "\x62\x4b" },
+ { 0x2f40, "\x65\x2f" },
+ { 0x2f41, "\x65\x34" },
+ { 0x2f42, "\x65\x87" },
+ { 0x2f43, "\x65\x97" },
+ { 0x2f44, "\x65\xa4" },
+ { 0x2f45, "\x65\xb9" },
+ { 0x2f46, "\x65\xe0" },
+ { 0x2f47, "\x65\xe5" },
+ { 0x2f48, "\x66\xf0" },
+ { 0x2f49, "\x67\x08" },
+ { 0x2f4a, "\x67\x28" },
+ { 0x2f4b, "\x6b\x20" },
+ { 0x2f4c, "\x6b\x62" },
+ { 0x2f4d, "\x6b\x79" },
+ { 0x2f4e, "\x6b\xb3" },
+ { 0x2f4f, "\x6b\xcb" },
+ { 0x2f50, "\x6b\xd4" },
+ { 0x2f51, "\x6b\xdb" },
+ { 0x2f52, "\x6c\x0f" },
+ { 0x2f53, "\x6c\x14" },
+ { 0x2f54, "\x6c\x34" },
+ { 0x2f55, "\x70\x6b" },
+ { 0x2f56, "\x72\x2a" },
+ { 0x2f57, "\x72\x36" },
+ { 0x2f58, "\x72\x3b" },
+ { 0x2f59, "\x72\x3f" },
+ { 0x2f5a, "\x72\x47" },
+ { 0x2f5b, "\x72\x59" },
+ { 0x2f5c, "\x72\x5b" },
+ { 0x2f5d, "\x72\xac" },
+ { 0x2f5e, "\x73\x84" },
+ { 0x2f5f, "\x73\x89" },
+ { 0x2f60, "\x74\xdc" },
+ { 0x2f61, "\x74\xe6" },
+ { 0x2f62, "\x75\x18" },
+ { 0x2f63, "\x75\x1f" },
+ { 0x2f64, "\x75\x28" },
+ { 0x2f65, "\x75\x30" },
+ { 0x2f66, "\x75\x8b" },
+ { 0x2f67, "\x75\x92" },
+ { 0x2f68, "\x76\x76" },
+ { 0x2f69, "\x76\x7d" },
+ { 0x2f6a, "\x76\xae" },
+ { 0x2f6b, "\x76\xbf" },
+ { 0x2f6c, "\x76\xee" },
+ { 0x2f6d, "\x77\xdb" },
+ { 0x2f6e, "\x77\xe2" },
+ { 0x2f6f, "\x77\xf3" },
+ { 0x2f70, "\x79\x3a" },
+ { 0x2f71, "\x79\xb8" },
+ { 0x2f72, "\x79\xbe" },
+ { 0x2f73, "\x7a\x74" },
+ { 0x2f74, "\x7a\xcb" },
+ { 0x2f75, "\x7a\xf9" },
+ { 0x2f76, "\x7c\x73" },
+ { 0x2f77, "\x7c\xf8" },
+ { 0x2f78, "\x7f\x36" },
+ { 0x2f79, "\x7f\x51" },
+ { 0x2f7a, "\x7f\x8a" },
+ { 0x2f7b, "\x7f\xbd" },
+ { 0x2f7c, "\x80\x01" },
+ { 0x2f7d, "\x80\x0c" },
+ { 0x2f7e, "\x80\x12" },
+ { 0x2f7f, "\x80\x33" },
+ { 0x2f80, "\x80\x7f" },
+ { 0x2f81, "\x80\x89" },
+ { 0x2f82, "\x81\xe3" },
+ { 0x2f83, "\x81\xea" },
+ { 0x2f84, "\x81\xf3" },
+ { 0x2f85, "\x81\xfc" },
+ { 0x2f86, "\x82\x0c" },
+ { 0x2f87, "\x82\x1b" },
+ { 0x2f88, "\x82\x1f" },
+ { 0x2f89, "\x82\x6e" },
+ { 0x2f8a, "\x82\x72" },
+ { 0x2f8b, "\x82\x78" },
+ { 0x2f8c, "\x86\x4d" },
+ { 0x2f8d, "\x86\x6b" },
+ { 0x2f8e, "\x88\x40" },
+ { 0x2f8f, "\x88\x4c" },
+ { 0x2f90, "\x88\x63" },
+ { 0x2f91, "\x89\x7e" },
+ { 0x2f92, "\x89\x8b" },
+ { 0x2f93, "\x89\xd2" },
+ { 0x2f94, "\x8a\x00" },
+ { 0x2f95, "\x8c\x37" },
+ { 0x2f96, "\x8c\x46" },
+ { 0x2f97, "\x8c\x55" },
+ { 0x2f98, "\x8c\x78" },
+ { 0x2f99, "\x8c\x9d" },
+ { 0x2f9a, "\x8d\x64" },
+ { 0x2f9b, "\x8d\x70" },
+ { 0x2f9c, "\x8d\xb3" },
+ { 0x2f9d, "\x8e\xab" },
+ { 0x2f9e, "\x8e\xca" },
+ { 0x2f9f, "\x8f\x9b" },
+ { 0x2fa0, "\x8f\xb0" },
+ { 0x2fa1, "\x8f\xb5" },
+ { 0x2fa2, "\x90\x91" },
+ { 0x2fa3, "\x91\x49" },
+ { 0x2fa4, "\x91\xc6" },
+ { 0x2fa5, "\x91\xcc" },
+ { 0x2fa6, "\x91\xd1" },
+ { 0x2fa7, "\x95\x77" },
+ { 0x2fa8, "\x95\x80" },
+ { 0x2fa9, "\x96\x1c" },
+ { 0x2faa, "\x96\xb6" },
+ { 0x2fab, "\x96\xb9" },
+ { 0x2fac, "\x96\xe8" },
+ { 0x2fad, "\x97\x51" },
+ { 0x2fae, "\x97\x5e" },
+ { 0x2faf, "\x97\x62" },
+ { 0x2fb0, "\x97\x69" },
+ { 0x2fb1, "\x97\xcb" },
+ { 0x2fb2, "\x97\xed" },
+ { 0x2fb3, "\x97\xf3" },
+ { 0x2fb4, "\x98\x01" },
+ { 0x2fb5, "\x98\xa8" },
+ { 0x2fb6, "\x98\xdb" },
+ { 0x2fb7, "\x98\xdf" },
+ { 0x2fb8, "\x99\x96" },
+ { 0x2fb9, "\x99\x99" },
+ { 0x2fba, "\x99\xac" },
+ { 0x2fbb, "\x9a\xa8" },
+ { 0x2fbc, "\x9a\xd8" },
+ { 0x2fbd, "\x9a\xdf" },
+ { 0x2fbe, "\x9b\x25" },
+ { 0x2fbf, "\x9b\x2f" },
+ { 0x2fc0, "\x9b\x32" },
+ { 0x2fc1, "\x9b\x3c" },
+ { 0x2fc2, "\x9b\x5a" },
+ { 0x2fc3, "\x9c\xe5" },
+ { 0x2fc4, "\x9e\x75" },
+ { 0x2fc5, "\x9e\x7f" },
+ { 0x2fc6, "\x9e\xa5" },
+ { 0x2fc7, "\x9e\xbb" },
+ { 0x2fc8, "\x9e\xc3" },
+ { 0x2fc9, "\x9e\xcd" },
+ { 0x2fca, "\x9e\xd1" },
+ { 0x2fcb, "\x9e\xf9" },
+ { 0x2fcc, "\x9e\xfd" },
+ { 0x2fcd, "\x9f\x0e" },
+ { 0x2fce, "\x9f\x13" },
+ { 0x2fcf, "\x9f\x20" },
+ { 0x2fd0, "\x9f\x3b" },
+ { 0x2fd1, "\x9f\x4a" },
+ { 0x2fd2, "\x9f\x52" },
+ { 0x2fd3, "\x9f\x8d" },
+ { 0x2fd4, "\x9f\x9c" },
+ { 0x2fd5, "\x9f\xa0" },
+ { 0x3000, "\x00\x20" },
+ { 0x3036, "\x30\x12" },
+ { 0x3038, "\x53\x41" },
+ { 0x3039, "\x53\x44" },
+ { 0x303a, "\x53\x45" },
+ { 0x309b, "\x00\x20\x30\x99" },
+ { 0x309c, "\x00\x20\x30\x9a" },
+ { 0x3131, "\x11\x00" },
+ { 0x3132, "\x11\x01" },
+ { 0x3133, "\x11\xaa" },
+ { 0x3134, "\x11\x02" },
+ { 0x3135, "\x11\xac" },
+ { 0x3136, "\x11\xad" },
+ { 0x3137, "\x11\x03" },
+ { 0x3138, "\x11\x04" },
+ { 0x3139, "\x11\x05" },
+ { 0x313a, "\x11\xb0" },
+ { 0x313b, "\x11\xb1" },
+ { 0x313c, "\x11\xb2" },
+ { 0x313d, "\x11\xb3" },
+ { 0x313e, "\x11\xb4" },
+ { 0x313f, "\x11\xb5" },
+ { 0x3140, "\x11\x1a" },
+ { 0x3141, "\x11\x06" },
+ { 0x3142, "\x11\x07" },
+ { 0x3143, "\x11\x08" },
+ { 0x3144, "\x11\x21" },
+ { 0x3145, "\x11\x09" },
+ { 0x3146, "\x11\x0a" },
+ { 0x3147, "\x11\x0b" },
+ { 0x3148, "\x11\x0c" },
+ { 0x3149, "\x11\x0d" },
+ { 0x314a, "\x11\x0e" },
+ { 0x314b, "\x11\x0f" },
+ { 0x314c, "\x11\x10" },
+ { 0x314d, "\x11\x11" },
+ { 0x314e, "\x11\x12" },
+ { 0x314f, "\x11\x61" },
+ { 0x3150, "\x11\x62" },
+ { 0x3151, "\x11\x63" },
+ { 0x3152, "\x11\x64" },
+ { 0x3153, "\x11\x65" },
+ { 0x3154, "\x11\x66" },
+ { 0x3155, "\x11\x67" },
+ { 0x3156, "\x11\x68" },
+ { 0x3157, "\x11\x69" },
+ { 0x3158, "\x11\x6a" },
+ { 0x3159, "\x11\x6b" },
+ { 0x315a, "\x11\x6c" },
+ { 0x315b, "\x11\x6d" },
+ { 0x315c, "\x11\x6e" },
+ { 0x315d, "\x11\x6f" },
+ { 0x315e, "\x11\x70" },
+ { 0x315f, "\x11\x71" },
+ { 0x3160, "\x11\x72" },
+ { 0x3161, "\x11\x73" },
+ { 0x3162, "\x11\x74" },
+ { 0x3163, "\x11\x75" },
+ { 0x3164, "\x11\x60" },
+ { 0x3165, "\x11\x14" },
+ { 0x3166, "\x11\x15" },
+ { 0x3167, "\x11\xc7" },
+ { 0x3168, "\x11\xc8" },
+ { 0x3169, "\x11\xcc" },
+ { 0x316a, "\x11\xce" },
+ { 0x316b, "\x11\xd3" },
+ { 0x316c, "\x11\xd7" },
+ { 0x316d, "\x11\xd9" },
+ { 0x316e, "\x11\x1c" },
+ { 0x316f, "\x11\xdd" },
+ { 0x3170, "\x11\xdf" },
+ { 0x3171, "\x11\x1d" },
+ { 0x3172, "\x11\x1e" },
+ { 0x3173, "\x11\x20" },
+ { 0x3174, "\x11\x22" },
+ { 0x3175, "\x11\x23" },
+ { 0x3176, "\x11\x27" },
+ { 0x3177, "\x11\x29" },
+ { 0x3178, "\x11\x2b" },
+ { 0x3179, "\x11\x2c" },
+ { 0x317a, "\x11\x2d" },
+ { 0x317b, "\x11\x2e" },
+ { 0x317c, "\x11\x2f" },
+ { 0x317d, "\x11\x32" },
+ { 0x317e, "\x11\x36" },
+ { 0x317f, "\x11\x40" },
+ { 0x3180, "\x11\x47" },
+ { 0x3181, "\x11\x4c" },
+ { 0x3182, "\x11\xf1" },
+ { 0x3183, "\x11\xf2" },
+ { 0x3184, "\x11\x57" },
+ { 0x3185, "\x11\x58" },
+ { 0x3186, "\x11\x59" },
+ { 0x3187, "\x11\x84" },
+ { 0x3188, "\x11\x85" },
+ { 0x3189, "\x11\x88" },
+ { 0x318a, "\x11\x91" },
+ { 0x318b, "\x11\x92" },
+ { 0x318c, "\x11\x94" },
+ { 0x318d, "\x11\x9e" },
+ { 0x318e, "\x11\xa1" },
+ { 0x3192, "\x4e\x00" },
+ { 0x3193, "\x4e\x8c" },
+ { 0x3194, "\x4e\x09" },
+ { 0x3195, "\x56\xdb" },
+ { 0x3196, "\x4e\x0a" },
+ { 0x3197, "\x4e\x2d" },
+ { 0x3198, "\x4e\x0b" },
+ { 0x3199, "\x75\x32" },
+ { 0x319a, "\x4e\x59" },
+ { 0x319b, "\x4e\x19" },
+ { 0x319c, "\x4e\x01" },
+ { 0x319d, "\x59\x29" },
+ { 0x319e, "\x57\x30" },
+ { 0x319f, "\x4e\xba" },
+ { 0x3200, "\x00\x28\x11\x00\x00\x29" },
+ { 0x3201, "\x00\x28\x11\x02\x00\x29" },
+ { 0x3202, "\x00\x28\x11\x03\x00\x29" },
+ { 0x3203, "\x00\x28\x11\x05\x00\x29" },
+ { 0x3204, "\x00\x28\x11\x06\x00\x29" },
+ { 0x3205, "\x00\x28\x11\x07\x00\x29" },
+ { 0x3206, "\x00\x28\x11\x09\x00\x29" },
+ { 0x3207, "\x00\x28\x11\x0b\x00\x29" },
+ { 0x3208, "\x00\x28\x11\x0c\x00\x29" },
+ { 0x3209, "\x00\x28\x11\x0e\x00\x29" },
+ { 0x320a, "\x00\x28\x11\x0f\x00\x29" },
+ { 0x320b, "\x00\x28\x11\x10\x00\x29" },
+ { 0x320c, "\x00\x28\x11\x11\x00\x29" },
+ { 0x320d, "\x00\x28\x11\x12\x00\x29" },
+ { 0x320e, "\x00\x28\x11\x00\x11\x61\x00\x29" },
+ { 0x320f, "\x00\x28\x11\x02\x11\x61\x00\x29" },
+ { 0x3210, "\x00\x28\x11\x03\x11\x61\x00\x29" },
+ { 0x3211, "\x00\x28\x11\x05\x11\x61\x00\x29" },
+ { 0x3212, "\x00\x28\x11\x06\x11\x61\x00\x29" },
+ { 0x3213, "\x00\x28\x11\x07\x11\x61\x00\x29" },
+ { 0x3214, "\x00\x28\x11\x09\x11\x61\x00\x29" },
+ { 0x3215, "\x00\x28\x11\x0b\x11\x61\x00\x29" },
+ { 0x3216, "\x00\x28\x11\x0c\x11\x61\x00\x29" },
+ { 0x3217, "\x00\x28\x11\x0e\x11\x61\x00\x29" },
+ { 0x3218, "\x00\x28\x11\x0f\x11\x61\x00\x29" },
+ { 0x3219, "\x00\x28\x11\x10\x11\x61\x00\x29" },
+ { 0x321a, "\x00\x28\x11\x11\x11\x61\x00\x29" },
+ { 0x321b, "\x00\x28\x11\x12\x11\x61\x00\x29" },
+ { 0x321c, "\x00\x28\x11\x0c\x11\x6e\x00\x29" },
+ { 0x3220, "\x00\x28\x4e\x00\x00\x29" },
+ { 0x3221, "\x00\x28\x4e\x8c\x00\x29" },
+ { 0x3222, "\x00\x28\x4e\x09\x00\x29" },
+ { 0x3223, "\x00\x28\x56\xdb\x00\x29" },
+ { 0x3224, "\x00\x28\x4e\x94\x00\x29" },
+ { 0x3225, "\x00\x28\x51\x6d\x00\x29" },
+ { 0x3226, "\x00\x28\x4e\x03\x00\x29" },
+ { 0x3227, "\x00\x28\x51\x6b\x00\x29" },
+ { 0x3228, "\x00\x28\x4e\x5d\x00\x29" },
+ { 0x3229, "\x00\x28\x53\x41\x00\x29" },
+ { 0x322a, "\x00\x28\x67\x08\x00\x29" },
+ { 0x322b, "\x00\x28\x70\x6b\x00\x29" },
+ { 0x322c, "\x00\x28\x6c\x34\x00\x29" },
+ { 0x322d, "\x00\x28\x67\x28\x00\x29" },
+ { 0x322e, "\x00\x28\x91\xd1\x00\x29" },
+ { 0x322f, "\x00\x28\x57\x1f\x00\x29" },
+ { 0x3230, "\x00\x28\x65\xe5\x00\x29" },
+ { 0x3231, "\x00\x28\x68\x2a\x00\x29" },
+ { 0x3232, "\x00\x28\x67\x09\x00\x29" },
+ { 0x3233, "\x00\x28\x79\x3e\x00\x29" },
+ { 0x3234, "\x00\x28\x54\x0d\x00\x29" },
+ { 0x3235, "\x00\x28\x72\x79\x00\x29" },
+ { 0x3236, "\x00\x28\x8c\xa1\x00\x29" },
+ { 0x3237, "\x00\x28\x79\x5d\x00\x29" },
+ { 0x3238, "\x00\x28\x52\xb4\x00\x29" },
+ { 0x3239, "\x00\x28\x4e\xe3\x00\x29" },
+ { 0x323a, "\x00\x28\x54\x7c\x00\x29" },
+ { 0x323b, "\x00\x28\x5b\x66\x00\x29" },
+ { 0x323c, "\x00\x28\x76\xe3\x00\x29" },
+ { 0x323d, "\x00\x28\x4f\x01\x00\x29" },
+ { 0x323e, "\x00\x28\x8c\xc7\x00\x29" },
+ { 0x323f, "\x00\x28\x53\x54\x00\x29" },
+ { 0x3240, "\x00\x28\x79\x6d\x00\x29" },
+ { 0x3241, "\x00\x28\x4f\x11\x00\x29" },
+ { 0x3242, "\x00\x28\x81\xea\x00\x29" },
+ { 0x3243, "\x00\x28\x81\xf3\x00\x29" },
+ { 0x3260, "\x11\x00" },
+ { 0x3261, "\x11\x02" },
+ { 0x3262, "\x11\x03" },
+ { 0x3263, "\x11\x05" },
+ { 0x3264, "\x11\x06" },
+ { 0x3265, "\x11\x07" },
+ { 0x3266, "\x11\x09" },
+ { 0x3267, "\x11\x0b" },
+ { 0x3268, "\x11\x0c" },
+ { 0x3269, "\x11\x0e" },
+ { 0x326a, "\x11\x0f" },
+ { 0x326b, "\x11\x10" },
+ { 0x326c, "\x11\x11" },
+ { 0x326d, "\x11\x12" },
+ { 0x326e, "\x11\x00\x11\x61" },
+ { 0x326f, "\x11\x02\x11\x61" },
+ { 0x3270, "\x11\x03\x11\x61" },
+ { 0x3271, "\x11\x05\x11\x61" },
+ { 0x3272, "\x11\x06\x11\x61" },
+ { 0x3273, "\x11\x07\x11\x61" },
+ { 0x3274, "\x11\x09\x11\x61" },
+ { 0x3275, "\x11\x0b\x11\x61" },
+ { 0x3276, "\x11\x0c\x11\x61" },
+ { 0x3277, "\x11\x0e\x11\x61" },
+ { 0x3278, "\x11\x0f\x11\x61" },
+ { 0x3279, "\x11\x10\x11\x61" },
+ { 0x327a, "\x11\x11\x11\x61" },
+ { 0x327b, "\x11\x12\x11\x61" },
+ { 0x3280, "\x4e\x00" },
+ { 0x3281, "\x4e\x8c" },
+ { 0x3282, "\x4e\x09" },
+ { 0x3283, "\x56\xdb" },
+ { 0x3284, "\x4e\x94" },
+ { 0x3285, "\x51\x6d" },
+ { 0x3286, "\x4e\x03" },
+ { 0x3287, "\x51\x6b" },
+ { 0x3288, "\x4e\x5d" },
+ { 0x3289, "\x53\x41" },
+ { 0x328a, "\x67\x08" },
+ { 0x328b, "\x70\x6b" },
+ { 0x328c, "\x6c\x34" },
+ { 0x328d, "\x67\x28" },
+ { 0x328e, "\x91\xd1" },
+ { 0x328f, "\x57\x1f" },
+ { 0x3290, "\x65\xe5" },
+ { 0x3291, "\x68\x2a" },
+ { 0x3292, "\x67\x09" },
+ { 0x3293, "\x79\x3e" },
+ { 0x3294, "\x54\x0d" },
+ { 0x3295, "\x72\x79" },
+ { 0x3296, "\x8c\xa1" },
+ { 0x3297, "\x79\x5d" },
+ { 0x3298, "\x52\xb4" },
+ { 0x3299, "\x79\xd8" },
+ { 0x329a, "\x75\x37" },
+ { 0x329b, "\x59\x73" },
+ { 0x329c, "\x90\x69" },
+ { 0x329d, "\x51\x2a" },
+ { 0x329e, "\x53\x70" },
+ { 0x329f, "\x6c\xe8" },
+ { 0x32a0, "\x98\x05" },
+ { 0x32a1, "\x4f\x11" },
+ { 0x32a2, "\x51\x99" },
+ { 0x32a3, "\x6b\x63" },
+ { 0x32a4, "\x4e\x0a" },
+ { 0x32a5, "\x4e\x2d" },
+ { 0x32a6, "\x4e\x0b" },
+ { 0x32a7, "\x5d\xe6" },
+ { 0x32a8, "\x53\xf3" },
+ { 0x32a9, "\x53\x3b" },
+ { 0x32aa, "\x5b\x97" },
+ { 0x32ab, "\x5b\x66" },
+ { 0x32ac, "\x76\xe3" },
+ { 0x32ad, "\x4f\x01" },
+ { 0x32ae, "\x8c\xc7" },
+ { 0x32af, "\x53\x54" },
+ { 0x32b0, "\x59\x1c" },
+ { 0x32c0, "\x00\x31\x67\x08" },
+ { 0x32c1, "\x00\x32\x67\x08" },
+ { 0x32c2, "\x00\x33\x67\x08" },
+ { 0x32c3, "\x00\x34\x67\x08" },
+ { 0x32c4, "\x00\x35\x67\x08" },
+ { 0x32c5, "\x00\x36\x67\x08" },
+ { 0x32c6, "\x00\x37\x67\x08" },
+ { 0x32c7, "\x00\x38\x67\x08" },
+ { 0x32c8, "\x00\x39\x67\x08" },
+ { 0x32c9, "\x00\x31\x00\x30\x67\x08" },
+ { 0x32ca, "\x00\x31\x00\x31\x67\x08" },
+ { 0x32cb, "\x00\x31\x00\x32\x67\x08" },
+ { 0x32d0, "\x30\xa2" },
+ { 0x32d1, "\x30\xa4" },
+ { 0x32d2, "\x30\xa6" },
+ { 0x32d3, "\x30\xa8" },
+ { 0x32d4, "\x30\xaa" },
+ { 0x32d5, "\x30\xab" },
+ { 0x32d6, "\x30\xad" },
+ { 0x32d7, "\x30\xaf" },
+ { 0x32d8, "\x30\xb1" },
+ { 0x32d9, "\x30\xb3" },
+ { 0x32da, "\x30\xb5" },
+ { 0x32db, "\x30\xb7" },
+ { 0x32dc, "\x30\xb9" },
+ { 0x32dd, "\x30\xbb" },
+ { 0x32de, "\x30\xbd" },
+ { 0x32df, "\x30\xbf" },
+ { 0x32e0, "\x30\xc1" },
+ { 0x32e1, "\x30\xc4" },
+ { 0x32e2, "\x30\xc6" },
+ { 0x32e3, "\x30\xc8" },
+ { 0x32e4, "\x30\xca" },
+ { 0x32e5, "\x30\xcb" },
+ { 0x32e6, "\x30\xcc" },
+ { 0x32e7, "\x30\xcd" },
+ { 0x32e8, "\x30\xce" },
+ { 0x32e9, "\x30\xcf" },
+ { 0x32ea, "\x30\xd2" },
+ { 0x32eb, "\x30\xd5" },
+ { 0x32ec, "\x30\xd8" },
+ { 0x32ed, "\x30\xdb" },
+ { 0x32ee, "\x30\xde" },
+ { 0x32ef, "\x30\xdf" },
+ { 0x32f0, "\x30\xe0" },
+ { 0x32f1, "\x30\xe1" },
+ { 0x32f2, "\x30\xe2" },
+ { 0x32f3, "\x30\xe4" },
+ { 0x32f4, "\x30\xe6" },
+ { 0x32f5, "\x30\xe8" },
+ { 0x32f6, "\x30\xe9" },
+ { 0x32f7, "\x30\xea" },
+ { 0x32f8, "\x30\xeb" },
+ { 0x32f9, "\x30\xec" },
+ { 0x32fa, "\x30\xed" },
+ { 0x32fb, "\x30\xef" },
+ { 0x32fc, "\x30\xf0" },
+ { 0x32fd, "\x30\xf1" },
+ { 0x32fe, "\x30\xf2" },
+ { 0x3300, "\x30\xa2\x30\xd1\x30\xfc\x30\xc8" },
+ { 0x3301, "\x30\xa2\x30\xeb\x30\xd5\x30\xa1" },
+ { 0x3302, "\x30\xa2\x30\xf3\x30\xda\x30\xa2" },
+ { 0x3303, "\x30\xa2\x30\xfc\x30\xeb" },
+ { 0x3304, "\x30\xa4\x30\xcb\x30\xf3\x30\xb0" },
+ { 0x3305, "\x30\xa4\x30\xf3\x30\xc1" },
+ { 0x3306, "\x30\xa6\x30\xa9\x30\xf3" },
+ { 0x3307, "\x30\xa8\x30\xb9\x30\xaf\x30\xfc\x30\xc9" },
+ { 0x3308, "\x30\xa8\x30\xfc\x30\xab\x30\xfc" },
+ { 0x3309, "\x30\xaa\x30\xf3\x30\xb9" },
+ { 0x330a, "\x30\xaa\x30\xfc\x30\xe0" },
+ { 0x330b, "\x30\xab\x30\xa4\x30\xea" },
+ { 0x330c, "\x30\xab\x30\xe9\x30\xc3\x30\xc8" },
+ { 0x330d, "\x30\xab\x30\xed\x30\xea\x30\xfc" },
+ { 0x330e, "\x30\xac\x30\xed\x30\xf3" },
+ { 0x330f, "\x30\xac\x30\xf3\x30\xde" },
+ { 0x3310, "\x30\xae\x30\xac" },
+ { 0x3311, "\x30\xae\x30\xcb\x30\xfc" },
+ { 0x3312, "\x30\xad\x30\xe5\x30\xea\x30\xfc" },
+ { 0x3313, "\x30\xae\x30\xeb\x30\xc0\x30\xfc" },
+ { 0x3314, "\x30\xad\x30\xed" },
+ { 0x3315, "\x30\xad\x30\xed\x30\xb0\x30\xe9\x30\xe0" },
+ { 0x3316, "\x30\xad\x30\xed\x30\xe1\x30\xfc\x30\xc8\x30\xeb" },
+ { 0x3317, "\x30\xad\x30\xed\x30\xef\x30\xc3\x30\xc8" },
+ { 0x3318, "\x30\xb0\x30\xe9\x30\xe0" },
+ { 0x3319, "\x30\xb0\x30\xe9\x30\xe0\x30\xc8\x30\xf3" },
+ { 0x331a, "\x30\xaf\x30\xeb\x30\xbc\x30\xa4\x30\xed" },
+ { 0x331b, "\x30\xaf\x30\xed\x30\xfc\x30\xcd" },
+ { 0x331c, "\x30\xb1\x30\xfc\x30\xb9" },
+ { 0x331d, "\x30\xb3\x30\xeb\x30\xca" },
+ { 0x331e, "\x30\xb3\x30\xfc\x30\xdd" },
+ { 0x331f, "\x30\xb5\x30\xa4\x30\xaf\x30\xeb" },
+ { 0x3320, "\x30\xb5\x30\xf3\x30\xc1\x30\xfc\x30\xe0" },
+ { 0x3321, "\x30\xb7\x30\xea\x30\xf3\x30\xb0" },
+ { 0x3322, "\x30\xbb\x30\xf3\x30\xc1" },
+ { 0x3323, "\x30\xbb\x30\xf3\x30\xc8" },
+ { 0x3324, "\x30\xc0\x30\xfc\x30\xb9" },
+ { 0x3325, "\x30\xc7\x30\xb7" },
+ { 0x3326, "\x30\xc9\x30\xeb" },
+ { 0x3327, "\x30\xc8\x30\xf3" },
+ { 0x3328, "\x30\xca\x30\xce" },
+ { 0x3329, "\x30\xce\x30\xc3\x30\xc8" },
+ { 0x332a, "\x30\xcf\x30\xa4\x30\xc4" },
+ { 0x332b, "\x30\xd1\x30\xfc\x30\xbb\x30\xf3\x30\xc8" },
+ { 0x332c, "\x30\xd1\x30\xfc\x30\xc4" },
+ { 0x332d, "\x30\xd0\x30\xfc\x30\xec\x30\xeb" },
+ { 0x332e, "\x30\xd4\x30\xa2\x30\xb9\x30\xc8\x30\xeb" },
+ { 0x332f, "\x30\xd4\x30\xaf\x30\xeb" },
+ { 0x3330, "\x30\xd4\x30\xb3" },
+ { 0x3331, "\x30\xd3\x30\xeb" },
+ { 0x3332, "\x30\xd5\x30\xa1\x30\xe9\x30\xc3\x30\xc9" },
+ { 0x3333, "\x30\xd5\x30\xa3\x30\xfc\x30\xc8" },
+ { 0x3334, "\x30\xd6\x30\xc3\x30\xb7\x30\xa7\x30\xeb" },
+ { 0x3335, "\x30\xd5\x30\xe9\x30\xf3" },
+ { 0x3336, "\x30\xd8\x30\xaf\x30\xbf\x30\xfc\x30\xeb" },
+ { 0x3337, "\x30\xda\x30\xbd" },
+ { 0x3338, "\x30\xda\x30\xcb\x30\xd2" },
+ { 0x3339, "\x30\xd8\x30\xeb\x30\xc4" },
+ { 0x333a, "\x30\xda\x30\xf3\x30\xb9" },
+ { 0x333b, "\x30\xda\x30\xfc\x30\xb8" },
+ { 0x333c, "\x30\xd9\x30\xfc\x30\xbf" },
+ { 0x333d, "\x30\xdd\x30\xa4\x30\xf3\x30\xc8" },
+ { 0x333e, "\x30\xdc\x30\xeb\x30\xc8" },
+ { 0x333f, "\x30\xdb\x30\xf3" },
+ { 0x3340, "\x30\xdd\x30\xf3\x30\xc9" },
+ { 0x3341, "\x30\xdb\x30\xfc\x30\xeb" },
+ { 0x3342, "\x30\xdb\x30\xfc\x30\xf3" },
+ { 0x3343, "\x30\xde\x30\xa4\x30\xaf\x30\xed" },
+ { 0x3344, "\x30\xde\x30\xa4\x30\xeb" },
+ { 0x3345, "\x30\xde\x30\xc3\x30\xcf" },
+ { 0x3346, "\x30\xde\x30\xeb\x30\xaf" },
+ { 0x3347, "\x30\xde\x30\xf3\x30\xb7\x30\xe7\x30\xf3" },
+ { 0x3348, "\x30\xdf\x30\xaf\x30\xed\x30\xf3" },
+ { 0x3349, "\x30\xdf\x30\xea" },
+ { 0x334a, "\x30\xdf\x30\xea\x30\xd0\x30\xfc\x30\xeb" },
+ { 0x334b, "\x30\xe1\x30\xac" },
+ { 0x334c, "\x30\xe1\x30\xac\x30\xc8\x30\xf3" },
+ { 0x334d, "\x30\xe1\x30\xfc\x30\xc8\x30\xeb" },
+ { 0x334e, "\x30\xe4\x30\xfc\x30\xc9" },
+ { 0x334f, "\x30\xe4\x30\xfc\x30\xeb" },
+ { 0x3350, "\x30\xe6\x30\xa2\x30\xf3" },
+ { 0x3351, "\x30\xea\x30\xc3\x30\xc8\x30\xeb" },
+ { 0x3352, "\x30\xea\x30\xe9" },
+ { 0x3353, "\x30\xeb\x30\xd4\x30\xfc" },
+ { 0x3354, "\x30\xeb\x30\xfc\x30\xd6\x30\xeb" },
+ { 0x3355, "\x30\xec\x30\xe0" },
+ { 0x3356, "\x30\xec\x30\xf3\x30\xc8\x30\xb2\x30\xf3" },
+ { 0x3357, "\x30\xef\x30\xc3\x30\xc8" },
+ { 0x3358, "\x00\x30\x70\xb9" },
+ { 0x3359, "\x00\x31\x70\xb9" },
+ { 0x335a, "\x00\x32\x70\xb9" },
+ { 0x335b, "\x00\x33\x70\xb9" },
+ { 0x335c, "\x00\x34\x70\xb9" },
+ { 0x335d, "\x00\x35\x70\xb9" },
+ { 0x335e, "\x00\x36\x70\xb9" },
+ { 0x335f, "\x00\x37\x70\xb9" },
+ { 0x3360, "\x00\x38\x70\xb9" },
+ { 0x3361, "\x00\x39\x70\xb9" },
+ { 0x3362, "\x00\x31\x00\x30\x70\xb9" },
+ { 0x3363, "\x00\x31\x00\x31\x70\xb9" },
+ { 0x3364, "\x00\x31\x00\x32\x70\xb9" },
+ { 0x3365, "\x00\x31\x00\x33\x70\xb9" },
+ { 0x3366, "\x00\x31\x00\x34\x70\xb9" },
+ { 0x3367, "\x00\x31\x00\x35\x70\xb9" },
+ { 0x3368, "\x00\x31\x00\x36\x70\xb9" },
+ { 0x3369, "\x00\x31\x00\x37\x70\xb9" },
+ { 0x336a, "\x00\x31\x00\x38\x70\xb9" },
+ { 0x336b, "\x00\x31\x00\x39\x70\xb9" },
+ { 0x336c, "\x00\x32\x00\x30\x70\xb9" },
+ { 0x336d, "\x00\x32\x00\x31\x70\xb9" },
+ { 0x336e, "\x00\x32\x00\x32\x70\xb9" },
+ { 0x336f, "\x00\x32\x00\x33\x70\xb9" },
+ { 0x3370, "\x00\x32\x00\x34\x70\xb9" },
+ { 0x3371, "\x00\x68\x00\x50\x00\x61" },
+ { 0x3372, "\x00\x64\x00\x61" },
+ { 0x3373, "\x00\x41\x00\x55" },
+ { 0x3374, "\x00\x62\x00\x61\x00\x72" },
+ { 0x3375, "\x00\x6f\x00\x56" },
+ { 0x3376, "\x00\x70\x00\x63" },
+ { 0x337b, "\x5e\x73\x62\x10" },
+ { 0x337c, "\x66\x2d\x54\x8c" },
+ { 0x337d, "\x59\x27\x6b\x63" },
+ { 0x337e, "\x66\x0e\x6c\xbb" },
+ { 0x337f, "\x68\x2a\x5f\x0f\x4f\x1a\x79\x3e" },
+ { 0x3380, "\x00\x70\x00\x41" },
+ { 0x3381, "\x00\x6e\x00\x41" },
+ { 0x3382, "\x03\xbc\x00\x41" },
+ { 0x3383, "\x00\x6d\x00\x41" },
+ { 0x3384, "\x00\x6b\x00\x41" },
+ { 0x3385, "\x00\x4b\x00\x42" },
+ { 0x3386, "\x00\x4d\x00\x42" },
+ { 0x3387, "\x00\x47\x00\x42" },
+ { 0x3388, "\x00\x63\x00\x61\x00\x6c" },
+ { 0x3389, "\x00\x6b\x00\x63\x00\x61\x00\x6c" },
+ { 0x338a, "\x00\x70\x00\x46" },
+ { 0x338b, "\x00\x6e\x00\x46" },
+ { 0x338c, "\x03\xbc\x00\x46" },
+ { 0x338d, "\x03\xbc\x00\x67" },
+ { 0x338e, "\x00\x6d\x00\x67" },
+ { 0x338f, "\x00\x6b\x00\x67" },
+ { 0x3390, "\x00\x48\x00\x7a" },
+ { 0x3391, "\x00\x6b\x00\x48\x00\x7a" },
+ { 0x3392, "\x00\x4d\x00\x48\x00\x7a" },
+ { 0x3393, "\x00\x47\x00\x48\x00\x7a" },
+ { 0x3394, "\x00\x54\x00\x48\x00\x7a" },
+ { 0x3395, "\x03\xbc\x21\x13" },
+ { 0x3396, "\x00\x6d\x21\x13" },
+ { 0x3397, "\x00\x64\x21\x13" },
+ { 0x3398, "\x00\x6b\x21\x13" },
+ { 0x3399, "\x00\x66\x00\x6d" },
+ { 0x339a, "\x00\x6e\x00\x6d" },
+ { 0x339b, "\x03\xbc\x00\x6d" },
+ { 0x339c, "\x00\x6d\x00\x6d" },
+ { 0x339d, "\x00\x63\x00\x6d" },
+ { 0x339e, "\x00\x6b\x00\x6d" },
+ { 0x339f, "\x00\x6d\x00\x6d\x00\xb2" },
+ { 0x33a0, "\x00\x63\x00\x6d\x00\xb2" },
+ { 0x33a1, "\x00\x6d\x00\xb2" },
+ { 0x33a2, "\x00\x6b\x00\x6d\x00\xb2" },
+ { 0x33a3, "\x00\x6d\x00\x6d\x00\xb3" },
+ { 0x33a4, "\x00\x63\x00\x6d\x00\xb3" },
+ { 0x33a5, "\x00\x6d\x00\xb3" },
+ { 0x33a6, "\x00\x6b\x00\x6d\x00\xb3" },
+ { 0x33a7, "\x00\x6d\x22\x15\x00\x73" },
+ { 0x33a8, "\x00\x6d\x22\x15\x00\x73\x00\xb2" },
+ { 0x33a9, "\x00\x50\x00\x61" },
+ { 0x33aa, "\x00\x6b\x00\x50\x00\x61" },
+ { 0x33ab, "\x00\x4d\x00\x50\x00\x61" },
+ { 0x33ac, "\x00\x47\x00\x50\x00\x61" },
+ { 0x33ad, "\x00\x72\x00\x61\x00\x64" },
+ { 0x33ae, "\x00\x72\x00\x61\x00\x64\x22\x15\x00\x73" },
+ { 0x33af, "\x00\x72\x00\x61\x00\x64\x22\x15\x00\x73\x00\xb2" },
+ { 0x33b0, "\x00\x70\x00\x73" },
+ { 0x33b1, "\x00\x6e\x00\x73" },
+ { 0x33b2, "\x03\xbc\x00\x73" },
+ { 0x33b3, "\x00\x6d\x00\x73" },
+ { 0x33b4, "\x00\x70\x00\x56" },
+ { 0x33b5, "\x00\x6e\x00\x56" },
+ { 0x33b6, "\x03\xbc\x00\x56" },
+ { 0x33b7, "\x00\x6d\x00\x56" },
+ { 0x33b8, "\x00\x6b\x00\x56" },
+ { 0x33b9, "\x00\x4d\x00\x56" },
+ { 0x33ba, "\x00\x70\x00\x57" },
+ { 0x33bb, "\x00\x6e\x00\x57" },
+ { 0x33bc, "\x03\xbc\x00\x57" },
+ { 0x33bd, "\x00\x6d\x00\x57" },
+ { 0x33be, "\x00\x6b\x00\x57" },
+ { 0x33bf, "\x00\x4d\x00\x57" },
+ { 0x33c0, "\x00\x6b\x03\xa9" },
+ { 0x33c1, "\x00\x4d\x03\xa9" },
+ { 0x33c2, "\x00\x61\x00\x2e\x00\x6d\x00\x2e" },
+ { 0x33c3, "\x00\x42\x00\x71" },
+ { 0x33c4, "\x00\x63\x00\x63" },
+ { 0x33c5, "\x00\x63\x00\x64" },
+ { 0x33c6, "\x00\x43\x22\x15\x00\x6b\x00\x67" },
+ { 0x33c7, "\x00\x43\x00\x6f\x00\x2e" },
+ { 0x33c8, "\x00\x64\x00\x42" },
+ { 0x33c9, "\x00\x47\x00\x79" },
+ { 0x33ca, "\x00\x68\x00\x61" },
+ { 0x33cb, "\x00\x48\x00\x50" },
+ { 0x33cc, "\x00\x69\x00\x6e" },
+ { 0x33cd, "\x00\x4b\x00\x4b" },
+ { 0x33ce, "\x00\x4b\x00\x4d" },
+ { 0x33cf, "\x00\x6b\x00\x74" },
+ { 0x33d0, "\x00\x6c\x00\x6d" },
+ { 0x33d1, "\x00\x6c\x00\x6e" },
+ { 0x33d2, "\x00\x6c\x00\x6f\x00\x67" },
+ { 0x33d3, "\x00\x6c\x00\x78" },
+ { 0x33d4, "\x00\x6d\x00\x62" },
+ { 0x33d5, "\x00\x6d\x00\x69\x00\x6c" },
+ { 0x33d6, "\x00\x6d\x00\x6f\x00\x6c" },
+ { 0x33d7, "\x00\x50\x00\x48" },
+ { 0x33d8, "\x00\x70\x00\x2e\x00\x6d\x00\x2e" },
+ { 0x33d9, "\x00\x50\x00\x50\x00\x4d" },
+ { 0x33da, "\x00\x50\x00\x52" },
+ { 0x33db, "\x00\x73\x00\x72" },
+ { 0x33dc, "\x00\x53\x00\x76" },
+ { 0x33dd, "\x00\x57\x00\x62" },
+ { 0x33e0, "\x00\x31\x65\xe5" },
+ { 0x33e1, "\x00\x32\x65\xe5" },
+ { 0x33e2, "\x00\x33\x65\xe5" },
+ { 0x33e3, "\x00\x34\x65\xe5" },
+ { 0x33e4, "\x00\x35\x65\xe5" },
+ { 0x33e5, "\x00\x36\x65\xe5" },
+ { 0x33e6, "\x00\x37\x65\xe5" },
+ { 0x33e7, "\x00\x38\x65\xe5" },
+ { 0x33e8, "\x00\x39\x65\xe5" },
+ { 0x33e9, "\x00\x31\x00\x30\x65\xe5" },
+ { 0x33ea, "\x00\x31\x00\x31\x65\xe5" },
+ { 0x33eb, "\x00\x31\x00\x32\x65\xe5" },
+ { 0x33ec, "\x00\x31\x00\x33\x65\xe5" },
+ { 0x33ed, "\x00\x31\x00\x34\x65\xe5" },
+ { 0x33ee, "\x00\x31\x00\x35\x65\xe5" },
+ { 0x33ef, "\x00\x31\x00\x36\x65\xe5" },
+ { 0x33f0, "\x00\x31\x00\x37\x65\xe5" },
+ { 0x33f1, "\x00\x31\x00\x38\x65\xe5" },
+ { 0x33f2, "\x00\x31\x00\x39\x65\xe5" },
+ { 0x33f3, "\x00\x32\x00\x30\x65\xe5" },
+ { 0x33f4, "\x00\x32\x00\x31\x65\xe5" },
+ { 0x33f5, "\x00\x32\x00\x32\x65\xe5" },
+ { 0x33f6, "\x00\x32\x00\x33\x65\xe5" },
+ { 0x33f7, "\x00\x32\x00\x34\x65\xe5" },
+ { 0x33f8, "\x00\x32\x00\x35\x65\xe5" },
+ { 0x33f9, "\x00\x32\x00\x36\x65\xe5" },
+ { 0x33fa, "\x00\x32\x00\x37\x65\xe5" },
+ { 0x33fb, "\x00\x32\x00\x38\x65\xe5" },
+ { 0x33fc, "\x00\x32\x00\x39\x65\xe5" },
+ { 0x33fd, "\x00\x33\x00\x30\x65\xe5" },
+ { 0x33fe, "\x00\x33\x00\x31\x65\xe5" },
+ { 0xfb00, "\x00\x66\x00\x66" },
+ { 0xfb01, "\x00\x66\x00\x69" },
+ { 0xfb02, "\x00\x66\x00\x6c" },
+ { 0xfb03, "\x00\x66\x00\x66\x00\x69" },
+ { 0xfb04, "\x00\x66\x00\x66\x00\x6c" },
+ { 0xfb05, "\x01\x7f\x00\x74" },
+ { 0xfb06, "\x00\x73\x00\x74" },
+ { 0xfb13, "\x05\x74\x05\x76" },
+ { 0xfb14, "\x05\x74\x05\x65" },
+ { 0xfb15, "\x05\x74\x05\x6b" },
+ { 0xfb16, "\x05\x7e\x05\x76" },
+ { 0xfb17, "\x05\x74\x05\x6d" },
+ { 0xfb20, "\x05\xe2" },
+ { 0xfb21, "\x05\xd0" },
+ { 0xfb22, "\x05\xd3" },
+ { 0xfb23, "\x05\xd4" },
+ { 0xfb24, "\x05\xdb" },
+ { 0xfb25, "\x05\xdc" },
+ { 0xfb26, "\x05\xdd" },
+ { 0xfb27, "\x05\xe8" },
+ { 0xfb28, "\x05\xea" },
+ { 0xfb29, "\x00\x2b" },
+ { 0xfb4f, "\x05\xd0\x05\xdc" },
+ { 0xfb50, "\x06\x71" },
+ { 0xfb51, "\x06\x71" },
+ { 0xfb52, "\x06\x7b" },
+ { 0xfb53, "\x06\x7b" },
+ { 0xfb54, "\x06\x7b" },
+ { 0xfb55, "\x06\x7b" },
+ { 0xfb56, "\x06\x7e" },
+ { 0xfb57, "\x06\x7e" },
+ { 0xfb58, "\x06\x7e" },
+ { 0xfb59, "\x06\x7e" },
+ { 0xfb5a, "\x06\x80" },
+ { 0xfb5b, "\x06\x80" },
+ { 0xfb5c, "\x06\x80" },
+ { 0xfb5d, "\x06\x80" },
+ { 0xfb5e, "\x06\x7a" },
+ { 0xfb5f, "\x06\x7a" },
+ { 0xfb60, "\x06\x7a" },
+ { 0xfb61, "\x06\x7a" },
+ { 0xfb62, "\x06\x7f" },
+ { 0xfb63, "\x06\x7f" },
+ { 0xfb64, "\x06\x7f" },
+ { 0xfb65, "\x06\x7f" },
+ { 0xfb66, "\x06\x79" },
+ { 0xfb67, "\x06\x79" },
+ { 0xfb68, "\x06\x79" },
+ { 0xfb69, "\x06\x79" },
+ { 0xfb6a, "\x06\xa4" },
+ { 0xfb6b, "\x06\xa4" },
+ { 0xfb6c, "\x06\xa4" },
+ { 0xfb6d, "\x06\xa4" },
+ { 0xfb6e, "\x06\xa6" },
+ { 0xfb6f, "\x06\xa6" },
+ { 0xfb70, "\x06\xa6" },
+ { 0xfb71, "\x06\xa6" },
+ { 0xfb72, "\x06\x84" },
+ { 0xfb73, "\x06\x84" },
+ { 0xfb74, "\x06\x84" },
+ { 0xfb75, "\x06\x84" },
+ { 0xfb76, "\x06\x83" },
+ { 0xfb77, "\x06\x83" },
+ { 0xfb78, "\x06\x83" },
+ { 0xfb79, "\x06\x83" },
+ { 0xfb7a, "\x06\x86" },
+ { 0xfb7b, "\x06\x86" },
+ { 0xfb7c, "\x06\x86" },
+ { 0xfb7d, "\x06\x86" },
+ { 0xfb7e, "\x06\x87" },
+ { 0xfb7f, "\x06\x87" },
+ { 0xfb80, "\x06\x87" },
+ { 0xfb81, "\x06\x87" },
+ { 0xfb82, "\x06\x8d" },
+ { 0xfb83, "\x06\x8d" },
+ { 0xfb84, "\x06\x8c" },
+ { 0xfb85, "\x06\x8c" },
+ { 0xfb86, "\x06\x8e" },
+ { 0xfb87, "\x06\x8e" },
+ { 0xfb88, "\x06\x88" },
+ { 0xfb89, "\x06\x88" },
+ { 0xfb8a, "\x06\x98" },
+ { 0xfb8b, "\x06\x98" },
+ { 0xfb8c, "\x06\x91" },
+ { 0xfb8d, "\x06\x91" },
+ { 0xfb8e, "\x06\xa9" },
+ { 0xfb8f, "\x06\xa9" },
+ { 0xfb90, "\x06\xa9" },
+ { 0xfb91, "\x06\xa9" },
+ { 0xfb92, "\x06\xaf" },
+ { 0xfb93, "\x06\xaf" },
+ { 0xfb94, "\x06\xaf" },
+ { 0xfb95, "\x06\xaf" },
+ { 0xfb96, "\x06\xb3" },
+ { 0xfb97, "\x06\xb3" },
+ { 0xfb98, "\x06\xb3" },
+ { 0xfb99, "\x06\xb3" },
+ { 0xfb9a, "\x06\xb1" },
+ { 0xfb9b, "\x06\xb1" },
+ { 0xfb9c, "\x06\xb1" },
+ { 0xfb9d, "\x06\xb1" },
+ { 0xfb9e, "\x06\xba" },
+ { 0xfb9f, "\x06\xba" },
+ { 0xfba0, "\x06\xbb" },
+ { 0xfba1, "\x06\xbb" },
+ { 0xfba2, "\x06\xbb" },
+ { 0xfba3, "\x06\xbb" },
+ { 0xfba4, "\x06\xc0" },
+ { 0xfba5, "\x06\xc0" },
+ { 0xfba6, "\x06\xc1" },
+ { 0xfba7, "\x06\xc1" },
+ { 0xfba8, "\x06\xc1" },
+ { 0xfba9, "\x06\xc1" },
+ { 0xfbaa, "\x06\xbe" },
+ { 0xfbab, "\x06\xbe" },
+ { 0xfbac, "\x06\xbe" },
+ { 0xfbad, "\x06\xbe" },
+ { 0xfbae, "\x06\xd2" },
+ { 0xfbaf, "\x06\xd2" },
+ { 0xfbb0, "\x06\xd3" },
+ { 0xfbb1, "\x06\xd3" },
+ { 0xfbd3, "\x06\xad" },
+ { 0xfbd4, "\x06\xad" },
+ { 0xfbd5, "\x06\xad" },
+ { 0xfbd6, "\x06\xad" },
+ { 0xfbd7, "\x06\xc7" },
+ { 0xfbd8, "\x06\xc7" },
+ { 0xfbd9, "\x06\xc6" },
+ { 0xfbda, "\x06\xc6" },
+ { 0xfbdb, "\x06\xc8" },
+ { 0xfbdc, "\x06\xc8" },
+ { 0xfbdd, "\x06\x77" },
+ { 0xfbde, "\x06\xcb" },
+ { 0xfbdf, "\x06\xcb" },
+ { 0xfbe0, "\x06\xc5" },
+ { 0xfbe1, "\x06\xc5" },
+ { 0xfbe2, "\x06\xc9" },
+ { 0xfbe3, "\x06\xc9" },
+ { 0xfbe4, "\x06\xd0" },
+ { 0xfbe5, "\x06\xd0" },
+ { 0xfbe6, "\x06\xd0" },
+ { 0xfbe7, "\x06\xd0" },
+ { 0xfbe8, "\x06\x49" },
+ { 0xfbe9, "\x06\x49" },
+ { 0xfbea, "\x06\x26\x06\x27" },
+ { 0xfbeb, "\x06\x26\x06\x27" },
+ { 0xfbec, "\x06\x26\x06\xd5" },
+ { 0xfbed, "\x06\x26\x06\xd5" },
+ { 0xfbee, "\x06\x26\x06\x48" },
+ { 0xfbef, "\x06\x26\x06\x48" },
+ { 0xfbf0, "\x06\x26\x06\xc7" },
+ { 0xfbf1, "\x06\x26\x06\xc7" },
+ { 0xfbf2, "\x06\x26\x06\xc6" },
+ { 0xfbf3, "\x06\x26\x06\xc6" },
+ { 0xfbf4, "\x06\x26\x06\xc8" },
+ { 0xfbf5, "\x06\x26\x06\xc8" },
+ { 0xfbf6, "\x06\x26\x06\xd0" },
+ { 0xfbf7, "\x06\x26\x06\xd0" },
+ { 0xfbf8, "\x06\x26\x06\xd0" },
+ { 0xfbf9, "\x06\x26\x06\x49" },
+ { 0xfbfa, "\x06\x26\x06\x49" },
+ { 0xfbfb, "\x06\x26\x06\x49" },
+ { 0xfbfc, "\x06\xcc" },
+ { 0xfbfd, "\x06\xcc" },
+ { 0xfbfe, "\x06\xcc" },
+ { 0xfbff, "\x06\xcc" },
+ { 0xfc00, "\x06\x26\x06\x2c" },
+ { 0xfc01, "\x06\x26\x06\x2d" },
+ { 0xfc02, "\x06\x26\x06\x45" },
+ { 0xfc03, "\x06\x26\x06\x49" },
+ { 0xfc04, "\x06\x26\x06\x4a" },
+ { 0xfc05, "\x06\x28\x06\x2c" },
+ { 0xfc06, "\x06\x28\x06\x2d" },
+ { 0xfc07, "\x06\x28\x06\x2e" },
+ { 0xfc08, "\x06\x28\x06\x45" },
+ { 0xfc09, "\x06\x28\x06\x49" },
+ { 0xfc0a, "\x06\x28\x06\x4a" },
+ { 0xfc0b, "\x06\x2a\x06\x2c" },
+ { 0xfc0c, "\x06\x2a\x06\x2d" },
+ { 0xfc0d, "\x06\x2a\x06\x2e" },
+ { 0xfc0e, "\x06\x2a\x06\x45" },
+ { 0xfc0f, "\x06\x2a\x06\x49" },
+ { 0xfc10, "\x06\x2a\x06\x4a" },
+ { 0xfc11, "\x06\x2b\x06\x2c" },
+ { 0xfc12, "\x06\x2b\x06\x45" },
+ { 0xfc13, "\x06\x2b\x06\x49" },
+ { 0xfc14, "\x06\x2b\x06\x4a" },
+ { 0xfc15, "\x06\x2c\x06\x2d" },
+ { 0xfc16, "\x06\x2c\x06\x45" },
+ { 0xfc17, "\x06\x2d\x06\x2c" },
+ { 0xfc18, "\x06\x2d\x06\x45" },
+ { 0xfc19, "\x06\x2e\x06\x2c" },
+ { 0xfc1a, "\x06\x2e\x06\x2d" },
+ { 0xfc1b, "\x06\x2e\x06\x45" },
+ { 0xfc1c, "\x06\x33\x06\x2c" },
+ { 0xfc1d, "\x06\x33\x06\x2d" },
+ { 0xfc1e, "\x06\x33\x06\x2e" },
+ { 0xfc1f, "\x06\x33\x06\x45" },
+ { 0xfc20, "\x06\x35\x06\x2d" },
+ { 0xfc21, "\x06\x35\x06\x45" },
+ { 0xfc22, "\x06\x36\x06\x2c" },
+ { 0xfc23, "\x06\x36\x06\x2d" },
+ { 0xfc24, "\x06\x36\x06\x2e" },
+ { 0xfc25, "\x06\x36\x06\x45" },
+ { 0xfc26, "\x06\x37\x06\x2d" },
+ { 0xfc27, "\x06\x37\x06\x45" },
+ { 0xfc28, "\x06\x38\x06\x45" },
+ { 0xfc29, "\x06\x39\x06\x2c" },
+ { 0xfc2a, "\x06\x39\x06\x45" },
+ { 0xfc2b, "\x06\x3a\x06\x2c" },
+ { 0xfc2c, "\x06\x3a\x06\x45" },
+ { 0xfc2d, "\x06\x41\x06\x2c" },
+ { 0xfc2e, "\x06\x41\x06\x2d" },
+ { 0xfc2f, "\x06\x41\x06\x2e" },
+ { 0xfc30, "\x06\x41\x06\x45" },
+ { 0xfc31, "\x06\x41\x06\x49" },
+ { 0xfc32, "\x06\x41\x06\x4a" },
+ { 0xfc33, "\x06\x42\x06\x2d" },
+ { 0xfc34, "\x06\x42\x06\x45" },
+ { 0xfc35, "\x06\x42\x06\x49" },
+ { 0xfc36, "\x06\x42\x06\x4a" },
+ { 0xfc37, "\x06\x43\x06\x27" },
+ { 0xfc38, "\x06\x43\x06\x2c" },
+ { 0xfc39, "\x06\x43\x06\x2d" },
+ { 0xfc3a, "\x06\x43\x06\x2e" },
+ { 0xfc3b, "\x06\x43\x06\x44" },
+ { 0xfc3c, "\x06\x43\x06\x45" },
+ { 0xfc3d, "\x06\x43\x06\x49" },
+ { 0xfc3e, "\x06\x43\x06\x4a" },
+ { 0xfc3f, "\x06\x44\x06\x2c" },
+ { 0xfc40, "\x06\x44\x06\x2d" },
+ { 0xfc41, "\x06\x44\x06\x2e" },
+ { 0xfc42, "\x06\x44\x06\x45" },
+ { 0xfc43, "\x06\x44\x06\x49" },
+ { 0xfc44, "\x06\x44\x06\x4a" },
+ { 0xfc45, "\x06\x45\x06\x2c" },
+ { 0xfc46, "\x06\x45\x06\x2d" },
+ { 0xfc47, "\x06\x45\x06\x2e" },
+ { 0xfc48, "\x06\x45\x06\x45" },
+ { 0xfc49, "\x06\x45\x06\x49" },
+ { 0xfc4a, "\x06\x45\x06\x4a" },
+ { 0xfc4b, "\x06\x46\x06\x2c" },
+ { 0xfc4c, "\x06\x46\x06\x2d" },
+ { 0xfc4d, "\x06\x46\x06\x2e" },
+ { 0xfc4e, "\x06\x46\x06\x45" },
+ { 0xfc4f, "\x06\x46\x06\x49" },
+ { 0xfc50, "\x06\x46\x06\x4a" },
+ { 0xfc51, "\x06\x47\x06\x2c" },
+ { 0xfc52, "\x06\x47\x06\x45" },
+ { 0xfc53, "\x06\x47\x06\x49" },
+ { 0xfc54, "\x06\x47\x06\x4a" },
+ { 0xfc55, "\x06\x4a\x06\x2c" },
+ { 0xfc56, "\x06\x4a\x06\x2d" },
+ { 0xfc57, "\x06\x4a\x06\x2e" },
+ { 0xfc58, "\x06\x4a\x06\x45" },
+ { 0xfc59, "\x06\x4a\x06\x49" },
+ { 0xfc5a, "\x06\x4a\x06\x4a" },
+ { 0xfc5b, "\x06\x30\x06\x70" },
+ { 0xfc5c, "\x06\x31\x06\x70" },
+ { 0xfc5d, "\x06\x49\x06\x70" },
+ { 0xfc5e, "\x00\x20\x06\x4c\x06\x51" },
+ { 0xfc5f, "\x00\x20\x06\x4d\x06\x51" },
+ { 0xfc60, "\x00\x20\x06\x4e\x06\x51" },
+ { 0xfc61, "\x00\x20\x06\x4f\x06\x51" },
+ { 0xfc62, "\x00\x20\x06\x50\x06\x51" },
+ { 0xfc63, "\x00\x20\x06\x51\x06\x70" },
+ { 0xfc64, "\x06\x26\x06\x31" },
+ { 0xfc65, "\x06\x26\x06\x32" },
+ { 0xfc66, "\x06\x26\x06\x45" },
+ { 0xfc67, "\x06\x26\x06\x46" },
+ { 0xfc68, "\x06\x26\x06\x49" },
+ { 0xfc69, "\x06\x26\x06\x4a" },
+ { 0xfc6a, "\x06\x28\x06\x31" },
+ { 0xfc6b, "\x06\x28\x06\x32" },
+ { 0xfc6c, "\x06\x28\x06\x45" },
+ { 0xfc6d, "\x06\x28\x06\x46" },
+ { 0xfc6e, "\x06\x28\x06\x49" },
+ { 0xfc6f, "\x06\x28\x06\x4a" },
+ { 0xfc70, "\x06\x2a\x06\x31" },
+ { 0xfc71, "\x06\x2a\x06\x32" },
+ { 0xfc72, "\x06\x2a\x06\x45" },
+ { 0xfc73, "\x06\x2a\x06\x46" },
+ { 0xfc74, "\x06\x2a\x06\x49" },
+ { 0xfc75, "\x06\x2a\x06\x4a" },
+ { 0xfc76, "\x06\x2b\x06\x31" },
+ { 0xfc77, "\x06\x2b\x06\x32" },
+ { 0xfc78, "\x06\x2b\x06\x45" },
+ { 0xfc79, "\x06\x2b\x06\x46" },
+ { 0xfc7a, "\x06\x2b\x06\x49" },
+ { 0xfc7b, "\x06\x2b\x06\x4a" },
+ { 0xfc7c, "\x06\x41\x06\x49" },
+ { 0xfc7d, "\x06\x41\x06\x4a" },
+ { 0xfc7e, "\x06\x42\x06\x49" },
+ { 0xfc7f, "\x06\x42\x06\x4a" },
+ { 0xfc80, "\x06\x43\x06\x27" },
+ { 0xfc81, "\x06\x43\x06\x44" },
+ { 0xfc82, "\x06\x43\x06\x45" },
+ { 0xfc83, "\x06\x43\x06\x49" },
+ { 0xfc84, "\x06\x43\x06\x4a" },
+ { 0xfc85, "\x06\x44\x06\x45" },
+ { 0xfc86, "\x06\x44\x06\x49" },
+ { 0xfc87, "\x06\x44\x06\x4a" },
+ { 0xfc88, "\x06\x45\x06\x27" },
+ { 0xfc89, "\x06\x45\x06\x45" },
+ { 0xfc8a, "\x06\x46\x06\x31" },
+ { 0xfc8b, "\x06\x46\x06\x32" },
+ { 0xfc8c, "\x06\x46\x06\x45" },
+ { 0xfc8d, "\x06\x46\x06\x46" },
+ { 0xfc8e, "\x06\x46\x06\x49" },
+ { 0xfc8f, "\x06\x46\x06\x4a" },
+ { 0xfc90, "\x06\x49\x06\x70" },
+ { 0xfc91, "\x06\x4a\x06\x31" },
+ { 0xfc92, "\x06\x4a\x06\x32" },
+ { 0xfc93, "\x06\x4a\x06\x45" },
+ { 0xfc94, "\x06\x4a\x06\x46" },
+ { 0xfc95, "\x06\x4a\x06\x49" },
+ { 0xfc96, "\x06\x4a\x06\x4a" },
+ { 0xfc97, "\x06\x26\x06\x2c" },
+ { 0xfc98, "\x06\x26\x06\x2d" },
+ { 0xfc99, "\x06\x26\x06\x2e" },
+ { 0xfc9a, "\x06\x26\x06\x45" },
+ { 0xfc9b, "\x06\x26\x06\x47" },
+ { 0xfc9c, "\x06\x28\x06\x2c" },
+ { 0xfc9d, "\x06\x28\x06\x2d" },
+ { 0xfc9e, "\x06\x28\x06\x2e" },
+ { 0xfc9f, "\x06\x28\x06\x45" },
+ { 0xfca0, "\x06\x28\x06\x47" },
+ { 0xfca1, "\x06\x2a\x06\x2c" },
+ { 0xfca2, "\x06\x2a\x06\x2d" },
+ { 0xfca3, "\x06\x2a\x06\x2e" },
+ { 0xfca4, "\x06\x2a\x06\x45" },
+ { 0xfca5, "\x06\x2a\x06\x47" },
+ { 0xfca6, "\x06\x2b\x06\x45" },
+ { 0xfca7, "\x06\x2c\x06\x2d" },
+ { 0xfca8, "\x06\x2c\x06\x45" },
+ { 0xfca9, "\x06\x2d\x06\x2c" },
+ { 0xfcaa, "\x06\x2d\x06\x45" },
+ { 0xfcab, "\x06\x2e\x06\x2c" },
+ { 0xfcac, "\x06\x2e\x06\x45" },
+ { 0xfcad, "\x06\x33\x06\x2c" },
+ { 0xfcae, "\x06\x33\x06\x2d" },
+ { 0xfcaf, "\x06\x33\x06\x2e" },
+ { 0xfcb0, "\x06\x33\x06\x45" },
+ { 0xfcb1, "\x06\x35\x06\x2d" },
+ { 0xfcb2, "\x06\x35\x06\x2e" },
+ { 0xfcb3, "\x06\x35\x06\x45" },
+ { 0xfcb4, "\x06\x36\x06\x2c" },
+ { 0xfcb5, "\x06\x36\x06\x2d" },
+ { 0xfcb6, "\x06\x36\x06\x2e" },
+ { 0xfcb7, "\x06\x36\x06\x45" },
+ { 0xfcb8, "\x06\x37\x06\x2d" },
+ { 0xfcb9, "\x06\x38\x06\x45" },
+ { 0xfcba, "\x06\x39\x06\x2c" },
+ { 0xfcbb, "\x06\x39\x06\x45" },
+ { 0xfcbc, "\x06\x3a\x06\x2c" },
+ { 0xfcbd, "\x06\x3a\x06\x45" },
+ { 0xfcbe, "\x06\x41\x06\x2c" },
+ { 0xfcbf, "\x06\x41\x06\x2d" },
+ { 0xfcc0, "\x06\x41\x06\x2e" },
+ { 0xfcc1, "\x06\x41\x06\x45" },
+ { 0xfcc2, "\x06\x42\x06\x2d" },
+ { 0xfcc3, "\x06\x42\x06\x45" },
+ { 0xfcc4, "\x06\x43\x06\x2c" },
+ { 0xfcc5, "\x06\x43\x06\x2d" },
+ { 0xfcc6, "\x06\x43\x06\x2e" },
+ { 0xfcc7, "\x06\x43\x06\x44" },
+ { 0xfcc8, "\x06\x43\x06\x45" },
+ { 0xfcc9, "\x06\x44\x06\x2c" },
+ { 0xfcca, "\x06\x44\x06\x2d" },
+ { 0xfccb, "\x06\x44\x06\x2e" },
+ { 0xfccc, "\x06\x44\x06\x45" },
+ { 0xfccd, "\x06\x44\x06\x47" },
+ { 0xfcce, "\x06\x45\x06\x2c" },
+ { 0xfccf, "\x06\x45\x06\x2d" },
+ { 0xfcd0, "\x06\x45\x06\x2e" },
+ { 0xfcd1, "\x06\x45\x06\x45" },
+ { 0xfcd2, "\x06\x46\x06\x2c" },
+ { 0xfcd3, "\x06\x46\x06\x2d" },
+ { 0xfcd4, "\x06\x46\x06\x2e" },
+ { 0xfcd5, "\x06\x46\x06\x45" },
+ { 0xfcd6, "\x06\x46\x06\x47" },
+ { 0xfcd7, "\x06\x47\x06\x2c" },
+ { 0xfcd8, "\x06\x47\x06\x45" },
+ { 0xfcd9, "\x06\x47\x06\x70" },
+ { 0xfcda, "\x06\x4a\x06\x2c" },
+ { 0xfcdb, "\x06\x4a\x06\x2d" },
+ { 0xfcdc, "\x06\x4a\x06\x2e" },
+ { 0xfcdd, "\x06\x4a\x06\x45" },
+ { 0xfcde, "\x06\x4a\x06\x47" },
+ { 0xfcdf, "\x06\x26\x06\x45" },
+ { 0xfce0, "\x06\x26\x06\x47" },
+ { 0xfce1, "\x06\x28\x06\x45" },
+ { 0xfce2, "\x06\x28\x06\x47" },
+ { 0xfce3, "\x06\x2a\x06\x45" },
+ { 0xfce4, "\x06\x2a\x06\x47" },
+ { 0xfce5, "\x06\x2b\x06\x45" },
+ { 0xfce6, "\x06\x2b\x06\x47" },
+ { 0xfce7, "\x06\x33\x06\x45" },
+ { 0xfce8, "\x06\x33\x06\x47" },
+ { 0xfce9, "\x06\x34\x06\x45" },
+ { 0xfcea, "\x06\x34\x06\x47" },
+ { 0xfceb, "\x06\x43\x06\x44" },
+ { 0xfcec, "\x06\x43\x06\x45" },
+ { 0xfced, "\x06\x44\x06\x45" },
+ { 0xfcee, "\x06\x46\x06\x45" },
+ { 0xfcef, "\x06\x46\x06\x47" },
+ { 0xfcf0, "\x06\x4a\x06\x45" },
+ { 0xfcf1, "\x06\x4a\x06\x47" },
+ { 0xfcf2, "\x06\x40\x06\x4e\x06\x51" },
+ { 0xfcf3, "\x06\x40\x06\x4f\x06\x51" },
+ { 0xfcf4, "\x06\x40\x06\x50\x06\x51" },
+ { 0xfcf5, "\x06\x37\x06\x49" },
+ { 0xfcf6, "\x06\x37\x06\x4a" },
+ { 0xfcf7, "\x06\x39\x06\x49" },
+ { 0xfcf8, "\x06\x39\x06\x4a" },
+ { 0xfcf9, "\x06\x3a\x06\x49" },
+ { 0xfcfa, "\x06\x3a\x06\x4a" },
+ { 0xfcfb, "\x06\x33\x06\x49" },
+ { 0xfcfc, "\x06\x33\x06\x4a" },
+ { 0xfcfd, "\x06\x34\x06\x49" },
+ { 0xfcfe, "\x06\x34\x06\x4a" },
+ { 0xfcff, "\x06\x2d\x06\x49" },
+ { 0xfd00, "\x06\x2d\x06\x4a" },
+ { 0xfd01, "\x06\x2c\x06\x49" },
+ { 0xfd02, "\x06\x2c\x06\x4a" },
+ { 0xfd03, "\x06\x2e\x06\x49" },
+ { 0xfd04, "\x06\x2e\x06\x4a" },
+ { 0xfd05, "\x06\x35\x06\x49" },
+ { 0xfd06, "\x06\x35\x06\x4a" },
+ { 0xfd07, "\x06\x36\x06\x49" },
+ { 0xfd08, "\x06\x36\x06\x4a" },
+ { 0xfd09, "\x06\x34\x06\x2c" },
+ { 0xfd0a, "\x06\x34\x06\x2d" },
+ { 0xfd0b, "\x06\x34\x06\x2e" },
+ { 0xfd0c, "\x06\x34\x06\x45" },
+ { 0xfd0d, "\x06\x34\x06\x31" },
+ { 0xfd0e, "\x06\x33\x06\x31" },
+ { 0xfd0f, "\x06\x35\x06\x31" },
+ { 0xfd10, "\x06\x36\x06\x31" },
+ { 0xfd11, "\x06\x37\x06\x49" },
+ { 0xfd12, "\x06\x37\x06\x4a" },
+ { 0xfd13, "\x06\x39\x06\x49" },
+ { 0xfd14, "\x06\x39\x06\x4a" },
+ { 0xfd15, "\x06\x3a\x06\x49" },
+ { 0xfd16, "\x06\x3a\x06\x4a" },
+ { 0xfd17, "\x06\x33\x06\x49" },
+ { 0xfd18, "\x06\x33\x06\x4a" },
+ { 0xfd19, "\x06\x34\x06\x49" },
+ { 0xfd1a, "\x06\x34\x06\x4a" },
+ { 0xfd1b, "\x06\x2d\x06\x49" },
+ { 0xfd1c, "\x06\x2d\x06\x4a" },
+ { 0xfd1d, "\x06\x2c\x06\x49" },
+ { 0xfd1e, "\x06\x2c\x06\x4a" },
+ { 0xfd1f, "\x06\x2e\x06\x49" },
+ { 0xfd20, "\x06\x2e\x06\x4a" },
+ { 0xfd21, "\x06\x35\x06\x49" },
+ { 0xfd22, "\x06\x35\x06\x4a" },
+ { 0xfd23, "\x06\x36\x06\x49" },
+ { 0xfd24, "\x06\x36\x06\x4a" },
+ { 0xfd25, "\x06\x34\x06\x2c" },
+ { 0xfd26, "\x06\x34\x06\x2d" },
+ { 0xfd27, "\x06\x34\x06\x2e" },
+ { 0xfd28, "\x06\x34\x06\x45" },
+ { 0xfd29, "\x06\x34\x06\x31" },
+ { 0xfd2a, "\x06\x33\x06\x31" },
+ { 0xfd2b, "\x06\x35\x06\x31" },
+ { 0xfd2c, "\x06\x36\x06\x31" },
+ { 0xfd2d, "\x06\x34\x06\x2c" },
+ { 0xfd2e, "\x06\x34\x06\x2d" },
+ { 0xfd2f, "\x06\x34\x06\x2e" },
+ { 0xfd30, "\x06\x34\x06\x45" },
+ { 0xfd31, "\x06\x33\x06\x47" },
+ { 0xfd32, "\x06\x34\x06\x47" },
+ { 0xfd33, "\x06\x37\x06\x45" },
+ { 0xfd34, "\x06\x33\x06\x2c" },
+ { 0xfd35, "\x06\x33\x06\x2d" },
+ { 0xfd36, "\x06\x33\x06\x2e" },
+ { 0xfd37, "\x06\x34\x06\x2c" },
+ { 0xfd38, "\x06\x34\x06\x2d" },
+ { 0xfd39, "\x06\x34\x06\x2e" },
+ { 0xfd3a, "\x06\x37\x06\x45" },
+ { 0xfd3b, "\x06\x38\x06\x45" },
+ { 0xfd3c, "\x06\x27\x06\x4b" },
+ { 0xfd3d, "\x06\x27\x06\x4b" },
+ { 0xfd50, "\x06\x2a\x06\x2c\x06\x45" },
+ { 0xfd51, "\x06\x2a\x06\x2d\x06\x2c" },
+ { 0xfd52, "\x06\x2a\x06\x2d\x06\x2c" },
+ { 0xfd53, "\x06\x2a\x06\x2d\x06\x45" },
+ { 0xfd54, "\x06\x2a\x06\x2e\x06\x45" },
+ { 0xfd55, "\x06\x2a\x06\x45\x06\x2c" },
+ { 0xfd56, "\x06\x2a\x06\x45\x06\x2d" },
+ { 0xfd57, "\x06\x2a\x06\x45\x06\x2e" },
+ { 0xfd58, "\x06\x2c\x06\x45\x06\x2d" },
+ { 0xfd59, "\x06\x2c\x06\x45\x06\x2d" },
+ { 0xfd5a, "\x06\x2d\x06\x45\x06\x4a" },
+ { 0xfd5b, "\x06\x2d\x06\x45\x06\x49" },
+ { 0xfd5c, "\x06\x33\x06\x2d\x06\x2c" },
+ { 0xfd5d, "\x06\x33\x06\x2c\x06\x2d" },
+ { 0xfd5e, "\x06\x33\x06\x2c\x06\x49" },
+ { 0xfd5f, "\x06\x33\x06\x45\x06\x2d" },
+ { 0xfd60, "\x06\x33\x06\x45\x06\x2d" },
+ { 0xfd61, "\x06\x33\x06\x45\x06\x2c" },
+ { 0xfd62, "\x06\x33\x06\x45\x06\x45" },
+ { 0xfd63, "\x06\x33\x06\x45\x06\x45" },
+ { 0xfd64, "\x06\x35\x06\x2d\x06\x2d" },
+ { 0xfd65, "\x06\x35\x06\x2d\x06\x2d" },
+ { 0xfd66, "\x06\x35\x06\x45\x06\x45" },
+ { 0xfd67, "\x06\x34\x06\x2d\x06\x45" },
+ { 0xfd68, "\x06\x34\x06\x2d\x06\x45" },
+ { 0xfd69, "\x06\x34\x06\x2c\x06\x4a" },
+ { 0xfd6a, "\x06\x34\x06\x45\x06\x2e" },
+ { 0xfd6b, "\x06\x34\x06\x45\x06\x2e" },
+ { 0xfd6c, "\x06\x34\x06\x45\x06\x45" },
+ { 0xfd6d, "\x06\x34\x06\x45\x06\x45" },
+ { 0xfd6e, "\x06\x36\x06\x2d\x06\x49" },
+ { 0xfd6f, "\x06\x36\x06\x2e\x06\x45" },
+ { 0xfd70, "\x06\x36\x06\x2e\x06\x45" },
+ { 0xfd71, "\x06\x37\x06\x45\x06\x2d" },
+ { 0xfd72, "\x06\x37\x06\x45\x06\x2d" },
+ { 0xfd73, "\x06\x37\x06\x45\x06\x45" },
+ { 0xfd74, "\x06\x37\x06\x45\x06\x4a" },
+ { 0xfd75, "\x06\x39\x06\x2c\x06\x45" },
+ { 0xfd76, "\x06\x39\x06\x45\x06\x45" },
+ { 0xfd77, "\x06\x39\x06\x45\x06\x45" },
+ { 0xfd78, "\x06\x39\x06\x45\x06\x49" },
+ { 0xfd79, "\x06\x3a\x06\x45\x06\x45" },
+ { 0xfd7a, "\x06\x3a\x06\x45\x06\x4a" },
+ { 0xfd7b, "\x06\x3a\x06\x45\x06\x49" },
+ { 0xfd7c, "\x06\x41\x06\x2e\x06\x45" },
+ { 0xfd7d, "\x06\x41\x06\x2e\x06\x45" },
+ { 0xfd7e, "\x06\x42\x06\x45\x06\x2d" },
+ { 0xfd7f, "\x06\x42\x06\x45\x06\x45" },
+ { 0xfd80, "\x06\x44\x06\x2d\x06\x45" },
+ { 0xfd81, "\x06\x44\x06\x2d\x06\x4a" },
+ { 0xfd82, "\x06\x44\x06\x2d\x06\x49" },
+ { 0xfd83, "\x06\x44\x06\x2c\x06\x2c" },
+ { 0xfd84, "\x06\x44\x06\x2c\x06\x2c" },
+ { 0xfd85, "\x06\x44\x06\x2e\x06\x45" },
+ { 0xfd86, "\x06\x44\x06\x2e\x06\x45" },
+ { 0xfd87, "\x06\x44\x06\x45\x06\x2d" },
+ { 0xfd88, "\x06\x44\x06\x45\x06\x2d" },
+ { 0xfd89, "\x06\x45\x06\x2d\x06\x2c" },
+ { 0xfd8a, "\x06\x45\x06\x2d\x06\x45" },
+ { 0xfd8b, "\x06\x45\x06\x2d\x06\x4a" },
+ { 0xfd8c, "\x06\x45\x06\x2c\x06\x2d" },
+ { 0xfd8d, "\x06\x45\x06\x2c\x06\x45" },
+ { 0xfd8e, "\x06\x45\x06\x2e\x06\x2c" },
+ { 0xfd8f, "\x06\x45\x06\x2e\x06\x45" },
+ { 0xfd92, "\x06\x45\x06\x2c\x06\x2e" },
+ { 0xfd93, "\x06\x47\x06\x45\x06\x2c" },
+ { 0xfd94, "\x06\x47\x06\x45\x06\x45" },
+ { 0xfd95, "\x06\x46\x06\x2d\x06\x45" },
+ { 0xfd96, "\x06\x46\x06\x2d\x06\x49" },
+ { 0xfd97, "\x06\x46\x06\x2c\x06\x45" },
+ { 0xfd98, "\x06\x46\x06\x2c\x06\x45" },
+ { 0xfd99, "\x06\x46\x06\x2c\x06\x49" },
+ { 0xfd9a, "\x06\x46\x06\x45\x06\x4a" },
+ { 0xfd9b, "\x06\x46\x06\x45\x06\x49" },
+ { 0xfd9c, "\x06\x4a\x06\x45\x06\x45" },
+ { 0xfd9d, "\x06\x4a\x06\x45\x06\x45" },
+ { 0xfd9e, "\x06\x28\x06\x2e\x06\x4a" },
+ { 0xfd9f, "\x06\x2a\x06\x2c\x06\x4a" },
+ { 0xfda0, "\x06\x2a\x06\x2c\x06\x49" },
+ { 0xfda1, "\x06\x2a\x06\x2e\x06\x4a" },
+ { 0xfda2, "\x06\x2a\x06\x2e\x06\x49" },
+ { 0xfda3, "\x06\x2a\x06\x45\x06\x4a" },
+ { 0xfda4, "\x06\x2a\x06\x45\x06\x49" },
+ { 0xfda5, "\x06\x2c\x06\x45\x06\x4a" },
+ { 0xfda6, "\x06\x2c\x06\x2d\x06\x49" },
+ { 0xfda7, "\x06\x2c\x06\x45\x06\x49" },
+ { 0xfda8, "\x06\x33\x06\x2e\x06\x49" },
+ { 0xfda9, "\x06\x35\x06\x2d\x06\x4a" },
+ { 0xfdaa, "\x06\x34\x06\x2d\x06\x4a" },
+ { 0xfdab, "\x06\x36\x06\x2d\x06\x4a" },
+ { 0xfdac, "\x06\x44\x06\x2c\x06\x4a" },
+ { 0xfdad, "\x06\x44\x06\x45\x06\x4a" },
+ { 0xfdae, "\x06\x4a\x06\x2d\x06\x4a" },
+ { 0xfdaf, "\x06\x4a\x06\x2c\x06\x4a" },
+ { 0xfdb0, "\x06\x4a\x06\x45\x06\x4a" },
+ { 0xfdb1, "\x06\x45\x06\x45\x06\x4a" },
+ { 0xfdb2, "\x06\x42\x06\x45\x06\x4a" },
+ { 0xfdb3, "\x06\x46\x06\x2d\x06\x4a" },
+ { 0xfdb4, "\x06\x42\x06\x45\x06\x2d" },
+ { 0xfdb5, "\x06\x44\x06\x2d\x06\x45" },
+ { 0xfdb6, "\x06\x39\x06\x45\x06\x4a" },
+ { 0xfdb7, "\x06\x43\x06\x45\x06\x4a" },
+ { 0xfdb8, "\x06\x46\x06\x2c\x06\x2d" },
+ { 0xfdb9, "\x06\x45\x06\x2e\x06\x4a" },
+ { 0xfdba, "\x06\x44\x06\x2c\x06\x45" },
+ { 0xfdbb, "\x06\x43\x06\x45\x06\x45" },
+ { 0xfdbc, "\x06\x44\x06\x2c\x06\x45" },
+ { 0xfdbd, "\x06\x46\x06\x2c\x06\x2d" },
+ { 0xfdbe, "\x06\x2c\x06\x2d\x06\x4a" },
+ { 0xfdbf, "\x06\x2d\x06\x2c\x06\x4a" },
+ { 0xfdc0, "\x06\x45\x06\x2c\x06\x4a" },
+ { 0xfdc1, "\x06\x41\x06\x45\x06\x4a" },
+ { 0xfdc2, "\x06\x28\x06\x2d\x06\x4a" },
+ { 0xfdc3, "\x06\x43\x06\x45\x06\x45" },
+ { 0xfdc4, "\x06\x39\x06\x2c\x06\x45" },
+ { 0xfdc5, "\x06\x35\x06\x45\x06\x45" },
+ { 0xfdc6, "\x06\x33\x06\x2e\x06\x4a" },
+ { 0xfdc7, "\x06\x46\x06\x2c\x06\x4a" },
+ { 0xfdf0, "\x06\x35\x06\x44\x06\xd2" },
+ { 0xfdf1, "\x06\x42\x06\x44\x06\xd2" },
+ { 0xfdf2, "\x06\x27\x06\x44\x06\x44\x06\x47" },
+ { 0xfdf3, "\x06\x27\x06\x43\x06\x28\x06\x31" },
+ { 0xfdf4, "\x06\x45\x06\x2d\x06\x45\x06\x2f" },
+ { 0xfdf5, "\x06\x35\x06\x44\x06\x39\x06\x45" },
+ { 0xfdf6, "\x06\x31\x06\x33\x06\x48\x06\x44" },
+ { 0xfdf7, "\x06\x39\x06\x44\x06\x4a\x06\x47" },
+ { 0xfdf8, "\x06\x48\x06\x33\x06\x44\x06\x45" },
+ { 0xfdf9, "\x06\x35\x06\x44\x06\x49" },
+ { 0xfdfa, "\x06\x35\x06\x44\x06\x49\x00\x20\x06\x27\x06\x44\x06\x44\x06\x47\x00\x20\x06\x39\x06\x44\x06\x4a\x06\x47\x00\x20\x06\x48\x06\x33\x06\x44\x06\x45" },
+ { 0xfdfb, "\x06\x2c\x06\x44\x00\x20\x06\x2c\x06\x44\x06\x27\x06\x44\x06\x47" },
+ { 0xfe30, "\x20\x25" },
+ { 0xfe31, "\x20\x14" },
+ { 0xfe32, "\x20\x13" },
+ { 0xfe33, "\x00\x5f" },
+ { 0xfe34, "\x00\x5f" },
+ { 0xfe35, "\x00\x28" },
+ { 0xfe36, "\x00\x29" },
+ { 0xfe37, "\x00\x7b" },
+ { 0xfe38, "\x00\x7d" },
+ { 0xfe39, "\x30\x14" },
+ { 0xfe3a, "\x30\x15" },
+ { 0xfe3b, "\x30\x10" },
+ { 0xfe3c, "\x30\x11" },
+ { 0xfe3d, "\x30\x0a" },
+ { 0xfe3e, "\x30\x0b" },
+ { 0xfe3f, "\x30\x08" },
+ { 0xfe40, "\x30\x09" },
+ { 0xfe41, "\x30\x0c" },
+ { 0xfe42, "\x30\x0d" },
+ { 0xfe43, "\x30\x0e" },
+ { 0xfe44, "\x30\x0f" },
+ { 0xfe49, "\x20\x3e" },
+ { 0xfe4a, "\x20\x3e" },
+ { 0xfe4b, "\x20\x3e" },
+ { 0xfe4c, "\x20\x3e" },
+ { 0xfe4d, "\x00\x5f" },
+ { 0xfe4e, "\x00\x5f" },
+ { 0xfe4f, "\x00\x5f" },
+ { 0xfe50, "\x00\x2c" },
+ { 0xfe51, "\x30\x01" },
+ { 0xfe52, "\x00\x2e" },
+ { 0xfe54, "\x00\x3b" },
+ { 0xfe55, "\x00\x3a" },
+ { 0xfe56, "\x00\x3f" },
+ { 0xfe57, "\x00\x21" },
+ { 0xfe58, "\x20\x14" },
+ { 0xfe59, "\x00\x28" },
+ { 0xfe5a, "\x00\x29" },
+ { 0xfe5b, "\x00\x7b" },
+ { 0xfe5c, "\x00\x7d" },
+ { 0xfe5d, "\x30\x14" },
+ { 0xfe5e, "\x30\x15" },
+ { 0xfe5f, "\x00\x23" },
+ { 0xfe60, "\x00\x26" },
+ { 0xfe61, "\x00\x2a" },
+ { 0xfe62, "\x00\x2b" },
+ { 0xfe63, "\x00\x2d" },
+ { 0xfe64, "\x00\x3c" },
+ { 0xfe65, "\x00\x3e" },
+ { 0xfe66, "\x00\x3d" },
+ { 0xfe68, "\x00\x5c" },
+ { 0xfe69, "\x00\x24" },
+ { 0xfe6a, "\x00\x25" },
+ { 0xfe6b, "\x00\x40" },
+ { 0xfe70, "\x00\x20\x06\x4b" },
+ { 0xfe71, "\x06\x40\x06\x4b" },
+ { 0xfe72, "\x00\x20\x06\x4c" },
+ { 0xfe74, "\x00\x20\x06\x4d" },
+ { 0xfe76, "\x00\x20\x06\x4e" },
+ { 0xfe77, "\x06\x40\x06\x4e" },
+ { 0xfe78, "\x00\x20\x06\x4f" },
+ { 0xfe79, "\x06\x40\x06\x4f" },
+ { 0xfe7a, "\x00\x20\x06\x50" },
+ { 0xfe7b, "\x06\x40\x06\x50" },
+ { 0xfe7c, "\x00\x20\x06\x51" },
+ { 0xfe7d, "\x06\x40\x06\x51" },
+ { 0xfe7e, "\x00\x20\x06\x52" },
+ { 0xfe7f, "\x06\x40\x06\x52" },
+ { 0xfe80, "\x06\x21" },
+ { 0xfe81, "\x06\x22" },
+ { 0xfe82, "\x06\x22" },
+ { 0xfe83, "\x06\x23" },
+ { 0xfe84, "\x06\x23" },
+ { 0xfe85, "\x06\x24" },
+ { 0xfe86, "\x06\x24" },
+ { 0xfe87, "\x06\x25" },
+ { 0xfe88, "\x06\x25" },
+ { 0xfe89, "\x06\x26" },
+ { 0xfe8a, "\x06\x26" },
+ { 0xfe8b, "\x06\x26" },
+ { 0xfe8c, "\x06\x26" },
+ { 0xfe8d, "\x06\x27" },
+ { 0xfe8e, "\x06\x27" },
+ { 0xfe8f, "\x06\x28" },
+ { 0xfe90, "\x06\x28" },
+ { 0xfe91, "\x06\x28" },
+ { 0xfe92, "\x06\x28" },
+ { 0xfe93, "\x06\x29" },
+ { 0xfe94, "\x06\x29" },
+ { 0xfe95, "\x06\x2a" },
+ { 0xfe96, "\x06\x2a" },
+ { 0xfe97, "\x06\x2a" },
+ { 0xfe98, "\x06\x2a" },
+ { 0xfe99, "\x06\x2b" },
+ { 0xfe9a, "\x06\x2b" },
+ { 0xfe9b, "\x06\x2b" },
+ { 0xfe9c, "\x06\x2b" },
+ { 0xfe9d, "\x06\x2c" },
+ { 0xfe9e, "\x06\x2c" },
+ { 0xfe9f, "\x06\x2c" },
+ { 0xfea0, "\x06\x2c" },
+ { 0xfea1, "\x06\x2d" },
+ { 0xfea2, "\x06\x2d" },
+ { 0xfea3, "\x06\x2d" },
+ { 0xfea4, "\x06\x2d" },
+ { 0xfea5, "\x06\x2e" },
+ { 0xfea6, "\x06\x2e" },
+ { 0xfea7, "\x06\x2e" },
+ { 0xfea8, "\x06\x2e" },
+ { 0xfea9, "\x06\x2f" },
+ { 0xfeaa, "\x06\x2f" },
+ { 0xfeab, "\x06\x30" },
+ { 0xfeac, "\x06\x30" },
+ { 0xfead, "\x06\x31" },
+ { 0xfeae, "\x06\x31" },
+ { 0xfeaf, "\x06\x32" },
+ { 0xfeb0, "\x06\x32" },
+ { 0xfeb1, "\x06\x33" },
+ { 0xfeb2, "\x06\x33" },
+ { 0xfeb3, "\x06\x33" },
+ { 0xfeb4, "\x06\x33" },
+ { 0xfeb5, "\x06\x34" },
+ { 0xfeb6, "\x06\x34" },
+ { 0xfeb7, "\x06\x34" },
+ { 0xfeb8, "\x06\x34" },
+ { 0xfeb9, "\x06\x35" },
+ { 0xfeba, "\x06\x35" },
+ { 0xfebb, "\x06\x35" },
+ { 0xfebc, "\x06\x35" },
+ { 0xfebd, "\x06\x36" },
+ { 0xfebe, "\x06\x36" },
+ { 0xfebf, "\x06\x36" },
+ { 0xfec0, "\x06\x36" },
+ { 0xfec1, "\x06\x37" },
+ { 0xfec2, "\x06\x37" },
+ { 0xfec3, "\x06\x37" },
+ { 0xfec4, "\x06\x37" },
+ { 0xfec5, "\x06\x38" },
+ { 0xfec6, "\x06\x38" },
+ { 0xfec7, "\x06\x38" },
+ { 0xfec8, "\x06\x38" },
+ { 0xfec9, "\x06\x39" },
+ { 0xfeca, "\x06\x39" },
+ { 0xfecb, "\x06\x39" },
+ { 0xfecc, "\x06\x39" },
+ { 0xfecd, "\x06\x3a" },
+ { 0xfece, "\x06\x3a" },
+ { 0xfecf, "\x06\x3a" },
+ { 0xfed0, "\x06\x3a" },
+ { 0xfed1, "\x06\x41" },
+ { 0xfed2, "\x06\x41" },
+ { 0xfed3, "\x06\x41" },
+ { 0xfed4, "\x06\x41" },
+ { 0xfed5, "\x06\x42" },
+ { 0xfed6, "\x06\x42" },
+ { 0xfed7, "\x06\x42" },
+ { 0xfed8, "\x06\x42" },
+ { 0xfed9, "\x06\x43" },
+ { 0xfeda, "\x06\x43" },
+ { 0xfedb, "\x06\x43" },
+ { 0xfedc, "\x06\x43" },
+ { 0xfedd, "\x06\x44" },
+ { 0xfede, "\x06\x44" },
+ { 0xfedf, "\x06\x44" },
+ { 0xfee0, "\x06\x44" },
+ { 0xfee1, "\x06\x45" },
+ { 0xfee2, "\x06\x45" },
+ { 0xfee3, "\x06\x45" },
+ { 0xfee4, "\x06\x45" },
+ { 0xfee5, "\x06\x46" },
+ { 0xfee6, "\x06\x46" },
+ { 0xfee7, "\x06\x46" },
+ { 0xfee8, "\x06\x46" },
+ { 0xfee9, "\x06\x47" },
+ { 0xfeea, "\x06\x47" },
+ { 0xfeeb, "\x06\x47" },
+ { 0xfeec, "\x06\x47" },
+ { 0xfeed, "\x06\x48" },
+ { 0xfeee, "\x06\x48" },
+ { 0xfeef, "\x06\x49" },
+ { 0xfef0, "\x06\x49" },
+ { 0xfef1, "\x06\x4a" },
+ { 0xfef2, "\x06\x4a" },
+ { 0xfef3, "\x06\x4a" },
+ { 0xfef4, "\x06\x4a" },
+ { 0xfef5, "\x06\x44\x06\x22" },
+ { 0xfef6, "\x06\x44\x06\x22" },
+ { 0xfef7, "\x06\x44\x06\x23" },
+ { 0xfef8, "\x06\x44\x06\x23" },
+ { 0xfef9, "\x06\x44\x06\x25" },
+ { 0xfefa, "\x06\x44\x06\x25" },
+ { 0xfefb, "\x06\x44\x06\x27" },
+ { 0xfefc, "\x06\x44\x06\x27" },
+ { 0xff01, "\x00\x21" },
+ { 0xff02, "\x00\x22" },
+ { 0xff03, "\x00\x23" },
+ { 0xff04, "\x00\x24" },
+ { 0xff05, "\x00\x25" },
+ { 0xff06, "\x00\x26" },
+ { 0xff07, "\x00\x27" },
+ { 0xff08, "\x00\x28" },
+ { 0xff09, "\x00\x29" },
+ { 0xff0a, "\x00\x2a" },
+ { 0xff0b, "\x00\x2b" },
+ { 0xff0c, "\x00\x2c" },
+ { 0xff0d, "\x00\x2d" },
+ { 0xff0e, "\x00\x2e" },
+ { 0xff0f, "\x00\x2f" },
+ { 0xff10, "\x00\x30" },
+ { 0xff11, "\x00\x31" },
+ { 0xff12, "\x00\x32" },
+ { 0xff13, "\x00\x33" },
+ { 0xff14, "\x00\x34" },
+ { 0xff15, "\x00\x35" },
+ { 0xff16, "\x00\x36" },
+ { 0xff17, "\x00\x37" },
+ { 0xff18, "\x00\x38" },
+ { 0xff19, "\x00\x39" },
+ { 0xff1a, "\x00\x3a" },
+ { 0xff1b, "\x00\x3b" },
+ { 0xff1c, "\x00\x3c" },
+ { 0xff1d, "\x00\x3d" },
+ { 0xff1e, "\x00\x3e" },
+ { 0xff1f, "\x00\x3f" },
+ { 0xff20, "\x00\x40" },
+ { 0xff21, "\x00\x41" },
+ { 0xff22, "\x00\x42" },
+ { 0xff23, "\x00\x43" },
+ { 0xff24, "\x00\x44" },
+ { 0xff25, "\x00\x45" },
+ { 0xff26, "\x00\x46" },
+ { 0xff27, "\x00\x47" },
+ { 0xff28, "\x00\x48" },
+ { 0xff29, "\x00\x49" },
+ { 0xff2a, "\x00\x4a" },
+ { 0xff2b, "\x00\x4b" },
+ { 0xff2c, "\x00\x4c" },
+ { 0xff2d, "\x00\x4d" },
+ { 0xff2e, "\x00\x4e" },
+ { 0xff2f, "\x00\x4f" },
+ { 0xff30, "\x00\x50" },
+ { 0xff31, "\x00\x51" },
+ { 0xff32, "\x00\x52" },
+ { 0xff33, "\x00\x53" },
+ { 0xff34, "\x00\x54" },
+ { 0xff35, "\x00\x55" },
+ { 0xff36, "\x00\x56" },
+ { 0xff37, "\x00\x57" },
+ { 0xff38, "\x00\x58" },
+ { 0xff39, "\x00\x59" },
+ { 0xff3a, "\x00\x5a" },
+ { 0xff3b, "\x00\x5b" },
+ { 0xff3c, "\x00\x5c" },
+ { 0xff3d, "\x00\x5d" },
+ { 0xff3e, "\x00\x5e" },
+ { 0xff3f, "\x00\x5f" },
+ { 0xff40, "\x00\x60" },
+ { 0xff41, "\x00\x61" },
+ { 0xff42, "\x00\x62" },
+ { 0xff43, "\x00\x63" },
+ { 0xff44, "\x00\x64" },
+ { 0xff45, "\x00\x65" },
+ { 0xff46, "\x00\x66" },
+ { 0xff47, "\x00\x67" },
+ { 0xff48, "\x00\x68" },
+ { 0xff49, "\x00\x69" },
+ { 0xff4a, "\x00\x6a" },
+ { 0xff4b, "\x00\x6b" },
+ { 0xff4c, "\x00\x6c" },
+ { 0xff4d, "\x00\x6d" },
+ { 0xff4e, "\x00\x6e" },
+ { 0xff4f, "\x00\x6f" },
+ { 0xff50, "\x00\x70" },
+ { 0xff51, "\x00\x71" },
+ { 0xff52, "\x00\x72" },
+ { 0xff53, "\x00\x73" },
+ { 0xff54, "\x00\x74" },
+ { 0xff55, "\x00\x75" },
+ { 0xff56, "\x00\x76" },
+ { 0xff57, "\x00\x77" },
+ { 0xff58, "\x00\x78" },
+ { 0xff59, "\x00\x79" },
+ { 0xff5a, "\x00\x7a" },
+ { 0xff5b, "\x00\x7b" },
+ { 0xff5c, "\x00\x7c" },
+ { 0xff5d, "\x00\x7d" },
+ { 0xff5e, "\x00\x7e" },
+ { 0xff61, "\x30\x02" },
+ { 0xff62, "\x30\x0c" },
+ { 0xff63, "\x30\x0d" },
+ { 0xff64, "\x30\x01" },
+ { 0xff65, "\x30\xfb" },
+ { 0xff66, "\x30\xf2" },
+ { 0xff67, "\x30\xa1" },
+ { 0xff68, "\x30\xa3" },
+ { 0xff69, "\x30\xa5" },
+ { 0xff6a, "\x30\xa7" },
+ { 0xff6b, "\x30\xa9" },
+ { 0xff6c, "\x30\xe3" },
+ { 0xff6d, "\x30\xe5" },
+ { 0xff6e, "\x30\xe7" },
+ { 0xff6f, "\x30\xc3" },
+ { 0xff70, "\x30\xfc" },
+ { 0xff71, "\x30\xa2" },
+ { 0xff72, "\x30\xa4" },
+ { 0xff73, "\x30\xa6" },
+ { 0xff74, "\x30\xa8" },
+ { 0xff75, "\x30\xaa" },
+ { 0xff76, "\x30\xab" },
+ { 0xff77, "\x30\xad" },
+ { 0xff78, "\x30\xaf" },
+ { 0xff79, "\x30\xb1" },
+ { 0xff7a, "\x30\xb3" },
+ { 0xff7b, "\x30\xb5" },
+ { 0xff7c, "\x30\xb7" },
+ { 0xff7d, "\x30\xb9" },
+ { 0xff7e, "\x30\xbb" },
+ { 0xff7f, "\x30\xbd" },
+ { 0xff80, "\x30\xbf" },
+ { 0xff81, "\x30\xc1" },
+ { 0xff82, "\x30\xc4" },
+ { 0xff83, "\x30\xc6" },
+ { 0xff84, "\x30\xc8" },
+ { 0xff85, "\x30\xca" },
+ { 0xff86, "\x30\xcb" },
+ { 0xff87, "\x30\xcc" },
+ { 0xff88, "\x30\xcd" },
+ { 0xff89, "\x30\xce" },
+ { 0xff8a, "\x30\xcf" },
+ { 0xff8b, "\x30\xd2" },
+ { 0xff8c, "\x30\xd5" },
+ { 0xff8d, "\x30\xd8" },
+ { 0xff8e, "\x30\xdb" },
+ { 0xff8f, "\x30\xde" },
+ { 0xff90, "\x30\xdf" },
+ { 0xff91, "\x30\xe0" },
+ { 0xff92, "\x30\xe1" },
+ { 0xff93, "\x30\xe2" },
+ { 0xff94, "\x30\xe4" },
+ { 0xff95, "\x30\xe6" },
+ { 0xff96, "\x30\xe8" },
+ { 0xff97, "\x30\xe9" },
+ { 0xff98, "\x30\xea" },
+ { 0xff99, "\x30\xeb" },
+ { 0xff9a, "\x30\xec" },
+ { 0xff9b, "\x30\xed" },
+ { 0xff9c, "\x30\xef" },
+ { 0xff9d, "\x30\xf3" },
+ { 0xff9e, "\x30\x99" },
+ { 0xff9f, "\x30\x9a" },
+ { 0xffa0, "\x31\x64" },
+ { 0xffa1, "\x31\x31" },
+ { 0xffa2, "\x31\x32" },
+ { 0xffa3, "\x31\x33" },
+ { 0xffa4, "\x31\x34" },
+ { 0xffa5, "\x31\x35" },
+ { 0xffa6, "\x31\x36" },
+ { 0xffa7, "\x31\x37" },
+ { 0xffa8, "\x31\x38" },
+ { 0xffa9, "\x31\x39" },
+ { 0xffaa, "\x31\x3a" },
+ { 0xffab, "\x31\x3b" },
+ { 0xffac, "\x31\x3c" },
+ { 0xffad, "\x31\x3d" },
+ { 0xffae, "\x31\x3e" },
+ { 0xffaf, "\x31\x3f" },
+ { 0xffb0, "\x31\x40" },
+ { 0xffb1, "\x31\x41" },
+ { 0xffb2, "\x31\x42" },
+ { 0xffb3, "\x31\x43" },
+ { 0xffb4, "\x31\x44" },
+ { 0xffb5, "\x31\x45" },
+ { 0xffb6, "\x31\x46" },
+ { 0xffb7, "\x31\x47" },
+ { 0xffb8, "\x31\x48" },
+ { 0xffb9, "\x31\x49" },
+ { 0xffba, "\x31\x4a" },
+ { 0xffbb, "\x31\x4b" },
+ { 0xffbc, "\x31\x4c" },
+ { 0xffbd, "\x31\x4d" },
+ { 0xffbe, "\x31\x4e" },
+ { 0xffc2, "\x31\x4f" },
+ { 0xffc3, "\x31\x50" },
+ { 0xffc4, "\x31\x51" },
+ { 0xffc5, "\x31\x52" },
+ { 0xffc6, "\x31\x53" },
+ { 0xffc7, "\x31\x54" },
+ { 0xffca, "\x31\x55" },
+ { 0xffcb, "\x31\x56" },
+ { 0xffcc, "\x31\x57" },
+ { 0xffcd, "\x31\x58" },
+ { 0xffce, "\x31\x59" },
+ { 0xffcf, "\x31\x5a" },
+ { 0xffd2, "\x31\x5b" },
+ { 0xffd3, "\x31\x5c" },
+ { 0xffd4, "\x31\x5d" },
+ { 0xffd5, "\x31\x5e" },
+ { 0xffd6, "\x31\x5f" },
+ { 0xffd7, "\x31\x60" },
+ { 0xffda, "\x31\x61" },
+ { 0xffdb, "\x31\x62" },
+ { 0xffdc, "\x31\x63" },
+ { 0xffe0, "\x00\xa2" },
+ { 0xffe1, "\x00\xa3" },
+ { 0xffe2, "\x00\xac" },
+ { 0xffe3, "\x00\xaf" },
+ { 0xffe4, "\x00\xa6" },
+ { 0xffe5, "\x00\xa5" },
+ { 0xffe6, "\x20\xa9" },
+ { 0xffe8, "\x25\x02" },
+ { 0xffe9, "\x21\x90" },
+ { 0xffea, "\x21\x91" },
+ { 0xffeb, "\x21\x92" },
+ { 0xffec, "\x21\x93" },
+ { 0xffed, "\x25\xa0" },
+ { 0xffee, "\x25\xcb" }
+};
+
+#endif /* __JAVA_CHARDECOMP_H__ */
diff --git a/libjava/include/java-chartables.h b/libjava/include/java-chartables.h
new file mode 100644
index 000000000..d882c675e
--- /dev/null
+++ b/libjava/include/java-chartables.h
@@ -0,0 +1,1617 @@
+/* java-chartables.h -- Character tables for java.lang.Character -*- c++ -*-
+ Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+ *** This file is generated by scripts/unicode_to_chartables.pl ***
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+#ifndef __JAVA_CHARTABLES_H__
+#define __JAVA_CHARTABLES_H__
+
+// These tables are automatically generated by scripts/unicode_to_chartables.pl.
+// The Unicode data comes from www.unicode.org; this header is based on
+// UnicodeData-4.0.0.txt. JDK 1.5 uses Unicode version 4.0.0.
+// DO NOT EDIT the tables. Instead, fix the upstream scripts and run
+// them again.
+
+// The data is stored in C style arrays of the appropriate CNI types, to
+// guarantee that the data is constant and non-relocatable. The field
+// <code>blocks</code> stores the offset of a block of 2<sup>SHIFT</sup>
+// characters within <code>data</code>. The data field, in turn, stores
+// information about each character in the low order bits, and an offset
+// into the attribute tables <code>upper</code>, <code>lower</code>,
+// <code>numValue</code>, and <code>direction</code>. Notice that the
+// attribute tables are much smaller than 0xffff entries; as many characters
+// in Unicode share common attributes. Finally, there is a listing for
+// <code>title</code> exceptions (most characters just have the same title
+// case as upper case).
+
+// This file should only be included by natCharacter.cc
+
+/**
+ * The array containing the numeric values that are too large to be stored as
+ * chars in NUM_VALUE. NUM_VALUE in this case will contain a negative integer
+ * N such that LARGENUMS[-N - 3] contains the correct numeric value.
+ */
+static const jint largenums[] = {
+ 40000, 50000, 60000, 70000, 80000, 90000, };
+
+/**
+ * The character shift amount to look up the block offset. In other words,
+ * <code>(char) (blocks[p][off >> SHIFT[p]] + off)</code> is the index where
+ * <code>ch</code> is described in <code>data</code>, where <code>off</code>
+ * is ch & 0xffff and <code>p</code> is the plane the character belongs to.
+ */
+static const int shift[] = {
+ 4, 6, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 8, 8, };
+
+/**
+ * The mapping of character blocks to their location in <code>data</code>.
+ * Each entry has been adjusted so that a modulo 16 sum with the desired
+ * character gives the actual index into <code>data</code>.
+ */
+static const jchar blocks0[] = {
+ 15, 23, 53, 7, 52, 52, 90, 65424, 65437, 65427,
+ 11, 65461, 11, 4, 28, 21, 23, 7, 65527, 173,
+ 269, 65479, 65463, 65403, 273, 273, 183, 257, 65500, 65354,
+ 65335, 65267, 65303, 65287, 65269, 65401, 220, 50, 321, 5,
+ 65511, 317, 304, 311, 355, 355, 274, 325, 358, 342,
+ 326, 310, 65409, 401, 262, 65156, 458, 64826, 442, 64843,
+ 426, 65140, 64823, 334, 435, 64699, 64683, 64716, 64700, 371,
+ 64695, 64679, 64680, 64647, 64631, 64615, 275, 64583, 64567, 64578,
+ 64535, 65036, 65020, 64723, 64708, 64701, 65034, 65019, 65012, 65237,
+ 65219, 64791, 64789, 138, 127, 181, 64945, 220, 64878, 249,
+ 203, 65507, 107, 249, 64783, 64767, 64751, 64735, 64719, 9,
+ 171, 105, 65531, 88, 64623, 64822, 65494, 64460, 64444, 64428,
+ 64527, 64511, 65392, 65529, 64348, 64332, 64316, 64300, 64284, 64268,
+ 64252, 64236, 64220, 64204, 64188, 64172, 64156, 64140, 64124, 64108,
+ 64092, 64076, 64060, 64044, 65249, 64259, 64243, 65267, 64724, 65291,
+ 65299, 63915, 64394, 63482, 64105, 64485, 64366, 63758, 65193, 65199,
+ 64377, 63354, 63977, 63687, 65020, 63328, 64386, 65087, 63204, 63872,
+ 63849, 63246, 64454, 63332, 64937, 64989, 64010, 63098, 63721, 64328,
+ 63117, 62956, 64913, 63171, 63428, 63323, 63407, 63323, 63803, 64222,
+ 64347, 64791, 63236, 63489, 63465, 64420, 64727, 63279, 64657, 63148,
+ 64331, 63361, 63337, 64631, 64369, 63898, 64529, 63020, 64203, 63233,
+ 63209, 64143, 64503, 63838, 64401, 62892, 64468, 62443, 63091, 63450,
+ 64391, 63538, 62780, 62759, 62994, 62979, 62963, 64143, 64157, 64041,
+ 62652, 62636, 62151, 63220, 63096, 64185, 64185, 63935, 62524, 62508,
+ 64137, 62218, 63176, 63172, 62666, 62659, 63643, 62845, 63847, 62669,
+ 62662, 62649, 62052, 62284, 62268, 62252, 62483, 62467, 62722, 63849,
+ 63671, 63833, 62140, 62124, 62108, 62092, 63783, 63767, 63761, 62275,
+ 62259, 63347, 62227, 62211, 62195, 62179, 62163, 63148, 62131, 62115,
+ 62099, 62083, 63075, 62051, 62035, 62019, 62003, 63473, 61963, 61955,
+ 61939, 61923, 61227, 61211, 61875, 61859, 61163, 61827, 61795, 61123,
+ 61107, 61755, 61731, 61731, 61699, 61027, 61683, 61667, 61643, 62635,
+ 62147, 62425, 61340, 61324, 61555, 61539, 61523, 61507, 61491, 62966,
+ 61458, 61443, 61427, 61411, 61395, 61379, 61363, 61347, 61331, 61315,
+ 61299, 61283, 61267, 61251, 61235, 61219, 61203, 61187, 61171, 61155,
+ 61139, 61123, 61107, 61091, 61075, 61059, 61043, 61027, 61011, 60995,
+ 60979, 60963, 60947, 60931, 60915, 60899, 60883, 60867, 60205, 62324,
+ 61814, 61782, 60787, 60771, 60755, 60739, 62073, 62215, 60677, 62199,
+ 60659, 62183, 60627, 62167, 60581, 62151, 60563, 60547, 60531, 62103,
+ 61004, 62098, 60246, 62097, 62097, 60198, 60403, 60387, 61402, 60355,
+ 60339, 61811, 60307, 60291, 61953, 60012, 59996, 59980, 59964, 59948,
+ 60179, 61161, 61746, 60531, 59888, 60099, 61080, 61558, 59804, 59788,
+ 59772, 59756, 59740, 59724, 61668, 61652, 59676, 59660, 59644, 59628,
+ 59612, 59596, 59580, 59564, 59548, 59532, 59516, 59500, 59484, 59468,
+ 59452, 59436, 59420, 59404, 59388, 59372, 59356, 59340, 59324, 59308,
+ 59292, 59276, 59260, 59244, 59228, 59212, 59196, 59180, 59164, 59148,
+ 59132, 59116, 59100, 59084, 59068, 59052, 59036, 59020, 59004, 58988,
+ 58972, 58956, 58940, 58924, 59088, 59072, 59060, 59056, 59040, 59024,
+ 61022, 58796, 58780, 58764, 58748, 58732, 58716, 58700, 58684, 58668,
+ 58135, 58119, 58103, 58087, 58071, 58055, 58039, 58023, 58007, 58200,
+ 57975, 57959, 57943, 57927, 57911, 59112, 60622, 60622, 60590, 60574,
+ 60574, 60574, 60526, 60558, 60558, 60542, 60526, 60526, 58499, 60510,
+ 60510, 57701, 60494, 60494, 57467, 60493, 57427, 57334, 59163, 60445,
+ 60445, 57996, 60429, 60427, 57948, 60411, 58887, 57900, 58047, 59809,
+ 60046, 59529, 60439, 58731, 60423, 60423, 60423, 59922, 60407, 59668,
+ 59654, 59631, 59620, 59616, 59751, 60187, 60182, 59602, 60111, 60058,
+ 59577, 60060, 59602, 59637, 60006, 60003, 59952, 59516, 59950, 59932,
+ 60070, 59316, 60048, 60043, 60033, 60017, 60001, 57613, 59204, 57620,
+ 59188, 57600, 59140, 59945, 57148, 57132, 59076, 59060, 59859, 57068,
+ 59823, 57036, 59825, 59805, 59785, 59785, 59681, 59818, 59808, 59808,
+ 59798, 58754, 58820, 58804, 58788, 58772, 58756, 58740, 58724, 58708,
+ 58692, 58676, 58660, 59374, 58626, 58612, 58596, 58588, 58564, 57001,
+ 58532, 58516, 58500, 58484, 58469, 59260, 58436, 59240, 59224, 56428,
+ 56412, 56396, 56380, 56364, 56728, 58292, 56729, 58260, 56650, 59204,
+ 56673, 56667, 56657, 58964, 58148, 58939, 56156, 58635, 59076, 58084,
+ 58052, 58036, 58020, 58004, 57988, 57972, 57956, 57940, 57924, 57908,
+ 57892, 57876, 57860, 57844, 57828, 57812, 57812, 57796, 57780, 57764,
+ 57748, 57732, 57716, 57700, 57710, 57702, 58220, 57822, 57775, 58235,
+ 57679, 57584, 57562, 58161, 57661, 57673, 57492, 57671, 58045, 57561,
+ 57996, 57980, 57473, 57948, 57932, 57405, 57879, 57420, 58092, 55308,
+ 55292, 55276, 55260, 55244, 55228, 55212, 55196, 55180, 55164, 55148,
+ 55132, 55116, 55100, 55084, 55068, 55052, 55036, 55020, 55004, 54988,
+ 54972, 54956, 54940, 54924, 54908, 54892, 54876, 54860, 54844, 54828,
+ 54812, 54796, 54780, 54764, 54748, 54732, 54716, 54700, 54684, 54668,
+ 54652, 54636, 54620, 54604, 54588, 54572, 54556, 54540, 54524, 54508,
+ 54492, 54476, 54460, 54444, 56388, 54823, 56356, 56340, 56324, 56308,
+ 56292, 57094, 56260, 56244, 56228, 56212, 56196, 56180, 56164, 56148,
+ 56132, 56116, 56100, 56084, 56068, 56868, 54076, 56830, 57012, 57010,
+ 54323, 56918, 54226, 54211, 54195, 54179, 54163, 55228, 54114, 54115,
+ 54099, 54083, 54067, 55067, 55046, 54019, 55001, 53986, 53971, 53955,
+ 53939, 53923, 53891, 53991, 53875, 55347, 53596, 53580, 53564, 53795,
+ 56257, 56244, 56368, 56209, 56320, 56450, 56161, 56149, 56272, 56113,
+ 56097, 56100, 56165, 56049, 56033, 56133, 56001, 55985, 55969, 55953,
+ 55937, 55921, 55905, 55994, 55873, 55857, 55841, 55825, 55809, 55795,
+ 55777, 55762, 53267, 53251, 53235, 53219, 53203, 53187, 53171, 53155,
+ 53139, 53123, 53107, 53091, 53075, 53059, 53043, 53027, 53011, 52995,
+ 52979, 52963, 52947, 52931, 52915, 52899, 52883, 52867, 52851, 52835,
+ 52819, 52803, 52787, 52771, 52755, 52739, 52723, 52707, 52691, 52675,
+ 52659, 52643, 52627, 52611, 52595, 52579, 52563, 52547, 52531, 52515,
+ 52499, 52483, 52467, 52451, 52435, 52419, 52403, 52387, 52371, 52355,
+ 52339, 52323, 52307, 52291, 52275, 52259, 52243, 52227, 52211, 52195,
+ 52179, 52163, 52147, 52131, 52115, 52099, 52083, 52067, 52051, 52035,
+ 52019, 52003, 51987, 51971, 51955, 51939, 51923, 51907, 51891, 51875,
+ 51859, 51843, 51827, 51811, 51795, 51779, 51763, 51747, 51731, 51715,
+ 51699, 51683, 51667, 51651, 51635, 51619, 51603, 51587, 51571, 51555,
+ 51539, 51523, 51507, 51491, 51475, 51459, 51443, 51427, 51411, 51395,
+ 51379, 51363, 51347, 51331, 51315, 51299, 51283, 51267, 51251, 51235,
+ 51219, 51203, 51187, 51171, 51155, 51139, 51123, 51107, 51091, 51075,
+ 51059, 51043, 51027, 51011, 50995, 50979, 50963, 50947, 50931, 50915,
+ 50899, 50883, 50867, 50851, 50835, 50819, 50803, 50787, 50771, 50755,
+ 50739, 50723, 50707, 50691, 50675, 50659, 50643, 50627, 50611, 50595,
+ 50579, 50563, 50547, 50531, 50515, 50499, 50483, 50467, 50451, 50435,
+ 50419, 50403, 50387, 50371, 50355, 50339, 50323, 50307, 50291, 50275,
+ 50259, 50243, 50227, 50211, 50195, 50179, 50163, 50147, 50131, 50115,
+ 50099, 50083, 50067, 50051, 50035, 50019, 50003, 49987, 49971, 49955,
+ 49939, 49923, 49907, 49891, 49875, 49859, 49843, 49827, 49811, 49795,
+ 49779, 49763, 49747, 49731, 49715, 49699, 49683, 49667, 49651, 49635,
+ 49619, 49603, 49587, 49571, 49555, 49539, 49523, 49507, 49491, 49475,
+ 49459, 49443, 49427, 49411, 49395, 49379, 49363, 49347, 49331, 49315,
+ 49299, 49283, 49267, 49251, 49235, 49219, 49203, 49187, 49171, 49155,
+ 49139, 49123, 49107, 49091, 49075, 49059, 49043, 49027, 49011, 48995,
+ 48979, 48963, 48947, 48931, 48915, 48899, 48883, 48867, 48851, 48835,
+ 48819, 48803, 48787, 48771, 48755, 48739, 48723, 48707, 48691, 48675,
+ 48659, 48643, 48627, 48611, 48595, 48579, 48563, 48547, 48531, 48515,
+ 48499, 48483, 48467, 48451, 48435, 48419, 48403, 48387, 48371, 48355,
+ 48339, 48323, 48307, 48291, 48275, 48259, 48243, 48227, 48211, 48195,
+ 48179, 48163, 48147, 48131, 48115, 48099, 48083, 48067, 48051, 48035,
+ 48019, 48003, 47987, 47971, 47955, 47939, 47923, 47907, 47891, 47875,
+ 47859, 47843, 47827, 47811, 47795, 47779, 47763, 47747, 47731, 47715,
+ 47699, 47683, 47667, 47651, 47635, 47619, 47603, 47587, 47571, 47555,
+ 47539, 47523, 47507, 47491, 47475, 47459, 47443, 47427, 47411, 47395,
+ 47379, 47363, 47347, 47331, 47315, 47299, 47283, 47267, 47251, 47235,
+ 47219, 47203, 47187, 47171, 47155, 47139, 47123, 47107, 47091, 47075,
+ 47059, 47043, 47027, 47011, 46995, 46979, 46963, 46947, 46931, 46915,
+ 46899, 46883, 46867, 46851, 46835, 46819, 46803, 46787, 46771, 46755,
+ 46739, 46723, 46707, 48181, 48388, 48372, 48356, 48340, 46611, 46595,
+ 46579, 46563, 46547, 46531, 46515, 46499, 46483, 46467, 46451, 46435,
+ 46419, 46403, 46387, 46371, 46355, 46339, 46323, 46307, 46291, 46275,
+ 46259, 46243, 46227, 46211, 46195, 46179, 46163, 46147, 46131, 46115,
+ 46099, 46083, 46067, 46051, 46035, 46019, 46003, 45987, 45971, 45955,
+ 45939, 45923, 45907, 45891, 45875, 45859, 45843, 45827, 45811, 45795,
+ 45779, 45763, 45747, 45731, 45715, 45699, 45683, 45667, 45651, 45635,
+ 45619, 45603, 45587, 45571, 45555, 45539, 45523, 45507, 45491, 45475,
+ 45459, 45443, 45427, 45411, 45395, 45379, 45363, 45347, 45331, 45315,
+ 45299, 45283, 45267, 45251, 45235, 45219, 45203, 45187, 45171, 45155,
+ 45139, 45123, 45107, 45091, 45075, 45059, 45043, 45027, 45011, 44995,
+ 44979, 44963, 44947, 44931, 44915, 44899, 44883, 44867, 44851, 44835,
+ 44819, 44803, 44787, 44771, 44755, 44739, 44723, 44707, 44691, 44675,
+ 44659, 44643, 44627, 44611, 44595, 44579, 44563, 44547, 44531, 44515,
+ 44499, 44483, 44467, 44451, 44435, 44419, 44403, 44387, 44371, 44355,
+ 44339, 44323, 44307, 44291, 44275, 44259, 44243, 44227, 44211, 44195,
+ 44179, 44163, 44147, 44131, 44115, 44099, 44083, 44067, 44051, 44035,
+ 44019, 44003, 43987, 43971, 43955, 43939, 43923, 43907, 43891, 43875,
+ 43859, 43843, 43827, 43811, 43795, 43779, 43763, 43747, 43731, 43715,
+ 43699, 43683, 43667, 43651, 43635, 43619, 43603, 43587, 43571, 43555,
+ 43539, 43523, 43507, 43491, 43475, 43459, 43443, 43427, 43411, 43395,
+ 43379, 43363, 43347, 43331, 43315, 43299, 43283, 43267, 43251, 43235,
+ 43219, 43203, 43187, 43171, 43155, 43139, 43123, 43107, 43091, 43075,
+ 43059, 43043, 43027, 43011, 42995, 42979, 42963, 42947, 42931, 42915,
+ 42899, 42883, 42867, 42851, 42835, 42819, 42803, 42787, 42771, 42755,
+ 42739, 42723, 42707, 42691, 42675, 42659, 42643, 42627, 42611, 42595,
+ 42579, 42563, 42547, 42531, 42515, 42499, 42483, 42467, 42451, 42435,
+ 42419, 42403, 42387, 42371, 42355, 42339, 42323, 42307, 42291, 42275,
+ 42259, 42243, 42227, 42211, 42195, 42179, 42163, 42147, 42131, 42115,
+ 42099, 42083, 42067, 42051, 42035, 42019, 42003, 41987, 41971, 41955,
+ 41939, 41923, 41907, 41891, 41875, 41859, 41843, 41827, 41811, 41795,
+ 41779, 41763, 41747, 41731, 41715, 41699, 41683, 41667, 41651, 41635,
+ 41619, 41603, 41587, 41571, 41555, 41539, 41523, 41507, 41491, 41475,
+ 41459, 41443, 41427, 41411, 41395, 41379, 41363, 41347, 41331, 41315,
+ 41299, 41283, 41267, 41251, 41235, 41219, 41203, 41187, 41171, 41155,
+ 41139, 41123, 41107, 41091, 41075, 41059, 41043, 41027, 41011, 40995,
+ 40979, 40963, 40947, 40931, 40915, 40899, 40883, 40867, 40851, 40835,
+ 40819, 40803, 40787, 40771, 40755, 40739, 40723, 40707, 40691, 40675,
+ 40659, 40643, 40627, 40611, 40595, 40579, 40563, 40547, 40531, 40515,
+ 40499, 40483, 40467, 40451, 40435, 40419, 40403, 40387, 40371, 40355,
+ 40339, 40323, 40307, 40291, 40275, 40259, 40243, 40227, 40211, 40195,
+ 40179, 40163, 40147, 40131, 40115, 40099, 40083, 40067, 40051, 40035,
+ 40019, 40003, 39987, 39971, 39955, 39939, 39923, 39907, 39891, 39875,
+ 39859, 39843, 39827, 39811, 39795, 39779, 39763, 39747, 39731, 39715,
+ 39699, 39683, 39667, 39651, 39635, 39619, 39603, 39587, 39571, 39555,
+ 39539, 39523, 39507, 39491, 39475, 39459, 39443, 39427, 39411, 39395,
+ 39379, 39363, 39347, 39331, 39315, 39299, 39283, 39267, 39251, 39235,
+ 39219, 39203, 39187, 39171, 39155, 39139, 39123, 39107, 39091, 39075,
+ 39059, 39043, 39027, 39011, 38995, 38979, 38963, 38947, 38931, 38915,
+ 38899, 38883, 38867, 38851, 38835, 38819, 38803, 38787, 38771, 38755,
+ 38739, 38723, 38707, 38691, 38675, 38659, 38643, 38627, 38611, 38595,
+ 38579, 38563, 38547, 38531, 38515, 38499, 38483, 38467, 38451, 38435,
+ 38419, 38403, 38387, 38371, 38355, 38339, 38323, 38307, 38291, 38275,
+ 38259, 38243, 38227, 38211, 38195, 38179, 38163, 38147, 38131, 38115,
+ 38099, 38083, 38067, 38051, 38035, 38019, 38003, 37987, 37971, 37955,
+ 37939, 37923, 37907, 37891, 37875, 37859, 37843, 37827, 37811, 37795,
+ 37779, 37763, 37747, 37731, 37715, 37699, 37683, 37667, 37651, 37635,
+ 37619, 37603, 37587, 37571, 37555, 37539, 37523, 37507, 37491, 37475,
+ 37459, 37443, 37427, 37411, 37395, 37379, 37363, 37347, 37331, 37315,
+ 37299, 37283, 37267, 37251, 37235, 37219, 37203, 37187, 37171, 37155,
+ 37139, 37123, 37107, 37091, 37075, 37059, 37043, 37027, 37011, 36995,
+ 36979, 36963, 36947, 36931, 36915, 36899, 36883, 36867, 36851, 36835,
+ 36819, 36803, 36787, 36771, 36755, 36739, 36723, 36707, 36691, 36675,
+ 36659, 36643, 36627, 36611, 36595, 36579, 36563, 36547, 36531, 36515,
+ 36499, 36483, 36467, 36451, 36435, 36419, 36403, 36387, 36371, 36355,
+ 36339, 36323, 36307, 36291, 36275, 36259, 36243, 36227, 36211, 36195,
+ 36179, 36163, 36147, 36131, 36115, 36099, 36083, 36067, 36051, 36035,
+ 36019, 36003, 35987, 35971, 35955, 35939, 35923, 35907, 35891, 35875,
+ 35859, 35843, 35827, 35811, 35795, 35779, 35763, 35747, 35731, 35715,
+ 35699, 35683, 35667, 35651, 35635, 35619, 35603, 35587, 35571, 35555,
+ 35539, 35523, 35507, 35491, 35475, 35459, 35443, 35427, 35411, 35395,
+ 35379, 35363, 35347, 35331, 35315, 35299, 35283, 35267, 35251, 35235,
+ 35219, 35203, 35187, 35171, 35155, 35139, 35123, 35107, 35091, 35075,
+ 35059, 35043, 35027, 35011, 34995, 34979, 34963, 34947, 34931, 34915,
+ 34899, 34883, 34867, 34851, 34835, 34819, 34803, 34787, 34771, 34755,
+ 34739, 34723, 34707, 34691, 34675, 34659, 34643, 34627, 34611, 34595,
+ 34579, 34563, 34547, 34531, 34515, 34499, 34483, 34467, 34451, 34435,
+ 34419, 34403, 34387, 34371, 34355, 34339, 34323, 34307, 34291, 34275,
+ 34259, 34243, 34227, 34211, 34195, 34179, 34163, 34147, 34131, 34115,
+ 34099, 34083, 34067, 34051, 34035, 34019, 34003, 33987, 33971, 33955,
+ 33939, 33923, 33907, 33891, 33875, 33859, 33843, 33827, 33811, 33795,
+ 33779, 33763, 33747, 33731, 33715, 33699, 33683, 33667, 33651, 33635,
+ 33619, 33603, 33587, 33571, 33555, 33539, 33523, 33507, 33491, 33475,
+ 33459, 33443, 33427, 33411, 33395, 33379, 33363, 33347, 33331, 33315,
+ 33299, 33283, 33267, 33251, 33235, 33219, 33203, 33187, 33171, 33155,
+ 33139, 33123, 33107, 33091, 33075, 33059, 33043, 33027, 33011, 32995,
+ 32979, 32963, 32947, 32931, 32915, 32899, 32883, 32867, 32851, 32835,
+ 32819, 32803, 32787, 32771, 32755, 32739, 32723, 32707, 32691, 32675,
+ 32659, 32643, 32627, 32611, 32595, 32579, 32563, 32547, 32531, 32515,
+ 32499, 32483, 32467, 32451, 32435, 32419, 32403, 32387, 32371, 32355,
+ 32339, 32323, 32307, 32291, 32275, 32259, 32243, 32227, 32211, 32195,
+ 32179, 32163, 32147, 32131, 32115, 32099, 32083, 32067, 32051, 32035,
+ 32019, 32003, 31987, 31971, 31955, 31939, 31923, 31907, 31891, 31875,
+ 31859, 31843, 31827, 31811, 31795, 31779, 31763, 31747, 31731, 31715,
+ 31699, 31683, 31667, 31651, 31635, 31619, 31603, 31587, 31571, 31555,
+ 31539, 31523, 31507, 31491, 31475, 31459, 31443, 31427, 31411, 31395,
+ 31379, 31363, 31347, 31331, 31315, 31299, 31283, 31267, 31251, 31235,
+ 31219, 31203, 31187, 31171, 31155, 31139, 31123, 31107, 31091, 31075,
+ 31059, 31043, 31027, 31011, 30995, 30979, 30963, 30947, 30931, 30915,
+ 30899, 30883, 30867, 30851, 30835, 30819, 30803, 30787, 30771, 30755,
+ 30739, 30723, 30707, 30691, 30675, 30659, 30643, 30627, 30611, 30595,
+ 30579, 30563, 30547, 30531, 30515, 30499, 30483, 30467, 30451, 30435,
+ 30419, 30403, 30387, 30371, 30355, 30339, 30323, 30307, 30291, 30275,
+ 30259, 30243, 30227, 30211, 30195, 30179, 30163, 30147, 30131, 30115,
+ 30099, 30083, 30067, 30051, 30035, 30019, 30003, 29987, 29971, 29955,
+ 29939, 29923, 29907, 29891, 29875, 29859, 29843, 29827, 29811, 29795,
+ 29779, 29763, 29747, 29731, 29715, 29699, 29683, 29667, 29651, 29635,
+ 29619, 29603, 29587, 29571, 29555, 29539, 29523, 29507, 29491, 29475,
+ 29459, 29443, 29427, 29411, 29395, 29379, 29363, 29347, 29331, 29315,
+ 29299, 29283, 29267, 29251, 29235, 29219, 29203, 29187, 29171, 29155,
+ 29139, 29123, 29107, 29091, 29075, 29059, 29043, 29027, 29011, 28995,
+ 28979, 28963, 28947, 28931, 28915, 28899, 28883, 28867, 28851, 28835,
+ 28819, 28803, 28787, 28771, 28755, 28739, 28723, 28707, 28691, 28675,
+ 28659, 28643, 28627, 28611, 28595, 28579, 28563, 28547, 28531, 28515,
+ 28499, 28483, 28467, 28451, 28435, 28419, 28403, 28387, 28371, 28355,
+ 28339, 28323, 28307, 28291, 28275, 28259, 28243, 28227, 28211, 28195,
+ 28179, 28163, 28147, 28131, 28115, 28099, 28083, 28067, 28051, 28035,
+ 28019, 28003, 27987, 27971, 27955, 27939, 27923, 27907, 27891, 27875,
+ 27859, 27843, 27827, 27811, 27795, 27779, 27763, 27747, 27731, 27715,
+ 27699, 27683, 27667, 27651, 27635, 27619, 27603, 27587, 27571, 27555,
+ 27539, 27523, 27507, 27491, 27475, 27459, 27443, 27427, 27411, 27395,
+ 27379, 27363, 27347, 27331, 27315, 27299, 27283, 27267, 27251, 27235,
+ 27219, 27203, 27187, 27171, 27155, 27139, 27123, 27107, 27091, 27075,
+ 27059, 27043, 27027, 27011, 26995, 26979, 26963, 26947, 26931, 26915,
+ 26899, 26883, 26867, 26851, 26835, 26819, 26803, 26787, 26771, 26755,
+ 26739, 26723, 26707, 26691, 26675, 26659, 26643, 26627, 26611, 26595,
+ 26579, 26563, 26547, 26531, 26515, 26499, 26483, 26467, 26451, 26435,
+ 26419, 26403, 26387, 26371, 26355, 26339, 26323, 26307, 26291, 26275,
+ 26259, 26243, 26227, 26211, 26195, 26179, 26163, 26147, 26131, 26115,
+ 26099, 26083, 26067, 26051, 26035, 26019, 26003, 25987, 25971, 25955,
+ 25939, 25923, 25907, 25891, 25875, 25859, 25843, 25827, 25811, 25795,
+ 25779, 25763, 25747, 25731, 27205, 25452, 25436, 25420, 25404, 25388,
+ 25619, 25603, 25587, 25571, 25555, 25539, 25523, 25507, 25491, 25475,
+ 25459, 25443, 25427, 25411, 25395, 25379, 25363, 25347, 25331, 25315,
+ 25299, 25283, 25267, 25251, 25235, 25219, 25203, 25187, 25171, 25155,
+ 25139, 25123, 25107, 25091, 25075, 25059, 25043, 25027, 25011, 24995,
+ 24979, 24963, 24947, 24931, 24915, 24899, 24883, 24867, 24851, 24835,
+ 24819, 24803, 24787, 24771, 24755, 24739, 24723, 24707, 24691, 24675,
+ 24659, 24643, 24627, 24611, 24595, 24579, 24563, 24547, 24531, 24515,
+ 24499, 24483, 25465, 26164, 26148, 26132, 26931, 24140, 24124, 24108,
+ 24092, 24076, 24060, 24044, 24028, 24012, 23996, 23980, 23964, 23948,
+ 23932, 23916, 23900, 23884, 23868, 23852, 23836, 23820, 23804, 23788,
+ 23772, 23756, 23740, 23724, 23708, 23692, 23676, 23660, 23644, 23628,
+ 23612, 23596, 23580, 23564, 23548, 23532, 23516, 23500, 23484, 23468,
+ 23452, 23436, 23420, 23404, 23388, 23372, 23356, 23340, 23324, 23308,
+ 23292, 23276, 23260, 23244, 23228, 23212, 23196, 23180, 23164, 23148,
+ 23132, 23116, 23100, 23084, 23068, 23052, 23036, 23020, 23004, 22988,
+ 22972, 22956, 22940, 22924, 22908, 22892, 22876, 22860, 22844, 22828,
+ 22812, 22796, 22780, 22764, 22748, 22732, 22716, 22700, 22684, 22668,
+ 22652, 22636, 22620, 22604, 22588, 22572, 22556, 22540, 22524, 22508,
+ 22492, 22476, 22460, 22444, 22428, 22412, 22396, 22380, 22364, 22348,
+ 22332, 22316, 22547, 22531, 22515, 22499, 22483, 22467, 22451, 22435,
+ 22419, 22403, 22387, 22371, 22355, 22339, 22323, 22307, 22291, 22275,
+ 22259, 22243, 22227, 22211, 22195, 22179, 22163, 22147, 22131, 22115,
+ 22099, 22083, 22067, 22051, 22035, 22019, 22003, 21987, 21971, 21955,
+ 21939, 21923, 21907, 21891, 21875, 21859, 21843, 21827, 21811, 21795,
+ 21779, 21763, 21747, 21731, 21715, 21699, 21683, 21667, 21651, 21635,
+ 21619, 21603, 21587, 21571, 21555, 21539, 21523, 21507, 21491, 21475,
+ 21459, 21443, 21427, 21411, 21395, 21379, 21363, 21347, 21331, 21315,
+ 21299, 21283, 21267, 21251, 21235, 21219, 21203, 21187, 21171, 21155,
+ 21139, 21123, 21107, 21091, 21075, 21059, 21043, 21027, 21011, 20995,
+ 20979, 20963, 20947, 20931, 20915, 20899, 20883, 20867, 20851, 20835,
+ 20819, 20803, 20787, 20771, 20755, 20739, 20723, 20707, 20691, 20675,
+ 20659, 20643, 20627, 20611, 20595, 20579, 20563, 20547, 20531, 20515,
+ 20499, 20483, 20467, 20451, 20435, 20419, 20403, 20387, 20371, 20355,
+ 20339, 20323, 20307, 20291, 20275, 20259, 20243, 20227, 20211, 20195,
+ 20179, 20163, 20147, 20131, 20115, 20099, 20083, 20067, 20051, 20035,
+ 20019, 20003, 19987, 19971, 19955, 19939, 19923, 19907, 19891, 19875,
+ 19859, 19843, 19827, 19811, 19795, 19779, 19763, 19747, 19731, 19715,
+ 19699, 19683, 19667, 19651, 19635, 19619, 19603, 19587, 19571, 19555,
+ 19539, 19523, 19507, 19491, 19475, 19459, 19443, 19427, 19411, 19395,
+ 19379, 19363, 19347, 19331, 19315, 19299, 19283, 19267, 19251, 19235,
+ 19219, 19203, 19187, 19171, 19155, 19139, 19123, 19107, 19091, 19075,
+ 19059, 19043, 19027, 19011, 18995, 18979, 18963, 18947, 18931, 18915,
+ 18899, 18883, 18867, 18851, 18835, 18819, 18803, 18787, 18771, 18755,
+ 18739, 18723, 18707, 18691, 18675, 18659, 18643, 18627, 18611, 18595,
+ 18579, 18563, 18547, 18531, 18515, 18499, 18483, 18467, 18451, 18435,
+ 18419, 18403, 18387, 18371, 18355, 18339, 18323, 18307, 18291, 18275,
+ 18259, 18243, 18227, 18211, 18195, 18179, 18163, 18147, 18131, 18115,
+ 18099, 18083, 18067, 18051, 18035, 18019, 18003, 17987, 17971, 17955,
+ 17939, 17923, 17907, 17891, 17875, 17859, 17843, 17827, 17811, 17795,
+ 17779, 17763, 17747, 17731, 17715, 17699, 17683, 17667, 17651, 17635,
+ 17619, 17603, 17587, 17571, 17555, 17539, 17523, 17507, 17491, 17475,
+ 17459, 17443, 17427, 17411, 17395, 17379, 17363, 17347, 17331, 17315,
+ 17299, 17283, 17267, 17251, 17235, 17219, 17203, 17187, 17171, 17155,
+ 17139, 17123, 17107, 17091, 17075, 17059, 17043, 17027, 17011, 16995,
+ 16979, 16963, 16947, 16931, 16915, 16899, 16883, 16867, 16851, 16835,
+ 16819, 16803, 16787, 16771, 16755, 16739, 16723, 16707, 16691, 16675,
+ 16659, 16643, 16627, 16611, 16595, 16579, 16563, 16547, 16531, 16515,
+ 16499, 16483, 16467, 16451, 16435, 16419, 16403, 16387, 16371, 16355,
+ 16339, 16323, 16307, 16291, 16275, 16259, 16243, 16227, 16211, 16195,
+ 16179, 16163, 16147, 16131, 16115, 16099, 16083, 16067, 16051, 16035,
+ 16019, 16003, 15987, 15971, 15955, 15939, 15923, 15907, 15891, 15875,
+ 15859, 15843, 15827, 15811, 15795, 15779, 15763, 15747, 15731, 15715,
+ 15699, 15683, 15667, 15651, 15635, 15619, 15603, 15587, 15571, 15555,
+ 15539, 15523, 15507, 15491, 15475, 15459, 15443, 15427, 15411, 15395,
+ 15379, 15363, 15347, 15331, 15315, 15299, 15283, 15267, 15251, 15235,
+ 15219, 15203, 15187, 15171, 15155, 15139, 15123, 15107, 15091, 15075,
+ 15059, 15043, 15027, 15011, 14995, 14979, 14963, 14947, 14931, 14915,
+ 14899, 14883, 14867, 14851, 14835, 14819, 14803, 14787, 14771, 14755,
+ 14739, 14723, 14707, 14691, 14675, 14659, 14643, 14627, 14611, 14595,
+ 14579, 14563, 14547, 14531, 14515, 14499, 14483, 14467, 14451, 14435,
+ 14419, 14403, 14387, 14371, 14355, 14339, 14323, 14307, 14291, 14275,
+ 14259, 14243, 14227, 14211, 14195, 14179, 14163, 14147, 14131, 14115,
+ 14099, 14083, 14067, 14051, 14035, 14019, 14003, 13987, 13971, 13955,
+ 13939, 13923, 13907, 13891, 13875, 13859, 13843, 13827, 13811, 13795,
+ 13779, 13763, 13747, 13731, 13715, 13699, 13683, 13667, 13651, 13635,
+ 13619, 13603, 13587, 13571, 13555, 13539, 13523, 13507, 13491, 13475,
+ 13459, 13443, 13427, 13411, 13395, 13379, 13363, 13347, 13331, 13315,
+ 13299, 13283, 13267, 13251, 13235, 13219, 13203, 13187, 13171, 13155,
+ 13139, 13123, 13107, 13091, 13075, 13059, 13043, 13027, 13011, 12995,
+ 12979, 12963, 12947, 12931, 12915, 12899, 12883, 12867, 12851, 12835,
+ 12819, 12803, 12787, 12771, 12755, 12739, 12723, 12707, 12691, 12675,
+ 12659, 12643, 12627, 12611, 12595, 12579, 12563, 12547, 12531, 12515,
+ 12499, 12483, 12467, 12451, 12435, 12419, 12403, 12387, 12371, 12355,
+ 12339, 12323, 12307, 12291, 12275, 12259, 12243, 12227, 12211, 12195,
+ 12179, 12163, 12147, 12131, 12115, 12099, 12083, 12067, 12051, 12035,
+ 12019, 12003, 11987, 11971, 11955, 11939, 11923, 11907, 11891, 11875,
+ 11859, 11843, 11827, 11811, 11795, 11779, 11763, 11747, 11731, 11715,
+ 11699, 11683, 11667, 11651, 11635, 11619, 11603, 11587, 11571, 11555,
+ 11539, 11523, 11507, 11491, 11475, 11459, 11443, 11427, 11411, 11395,
+ 12871, 11116, 11100, 11084, 11068, 11052, 14050, 14034, 14018, 14002,
+ 13986, 13970, 13954, 13938, 13922, 13906, 13890, 13874, 13858, 13842,
+ 13826, 13810, 13794, 13778, 13762, 13746, 13730, 13714, 13698, 13682,
+ 13666, 13650, 13634, 13618, 13602, 13586, 13570, 13554, 13538, 13522,
+ 13506, 13490, 13474, 13458, 13442, 13426, 13410, 13394, 13378, 13362,
+ 13346, 13330, 13314, 13298, 13282, 13266, 13250, 13234, 13218, 13202,
+ 13186, 13170, 13154, 13138, 13122, 13106, 13090, 13074, 13058, 13042,
+ 13026, 13010, 12994, 12978, 12962, 12946, 12930, 12914, 12898, 12882,
+ 12866, 12850, 12834, 12818, 12802, 12786, 12770, 12754, 12738, 12722,
+ 12706, 12690, 12674, 12658, 12642, 12626, 12610, 12594, 12578, 12562,
+ 12546, 12530, 12514, 12498, 12482, 12466, 12450, 12434, 12418, 12402,
+ 12386, 12370, 12354, 12338, 12322, 12306, 12290, 12274, 12258, 12242,
+ 12226, 12210, 12194, 12178, 12162, 12146, 12130, 12114, 12098, 12082,
+ 12066, 12050, 12034, 12018, 12018, 12002, 11986, 11970, 11954, 11938,
+ 11922, 11906, 11890, 11874, 11858, 11842, 11826, 11810, 11794, 11778,
+ 11762, 11746, 11730, 11714, 11698, 11682, 11666, 11650, 11634, 11618,
+ 11602, 11586, 11570, 11554, 11538, 11522, 11506, 11490, 11474, 11458,
+ 11442, 11426, 11410, 11394, 11378, 11362, 11346, 11330, 11314, 11298,
+ 11282, 11266, 11250, 11234, 11218, 11202, 11186, 11170, 11154, 11138,
+ 11122, 11106, 11090, 11074, 11058, 11042, 11026, 11010, 10994, 10978,
+ 10962, 10946, 10930, 10914, 10898, 10882, 10866, 10850, 10834, 10818,
+ 10802, 10786, 10770, 10754, 10738, 10722, 10706, 10690, 10674, 10658,
+ 10642, 10626, 10610, 10594, 10578, 10562, 10546, 10530, 10514, 10498,
+ 10482, 10466, 10450, 10434, 10418, 10402, 10386, 10370, 10354, 10338,
+ 10322, 10306, 10290, 10274, 10258, 10242, 10226, 10210, 10194, 10178,
+ 10162, 10146, 10130, 10114, 10098, 10082, 10066, 10050, 10034, 10018,
+ 10002, 9986, 9970, 9954, 9938, 9922, 9906, 9890, 9874, 9858,
+ 9842, 9826, 9810, 9794, 9778, 9762, 9746, 9730, 9714, 9698,
+ 9682, 9666, 9650, 9634, 9618, 9602, 9586, 9570, 9554, 9538,
+ 9522, 9506, 9490, 9474, 9458, 9442, 9426, 9410, 9394, 9378,
+ 9362, 9346, 9330, 9314, 9298, 9282, 9266, 9250, 9234, 9218,
+ 9202, 9186, 9170, 9154, 9138, 9122, 9106, 9090, 9074, 9058,
+ 9042, 9026, 9010, 8994, 8978, 8962, 8946, 8930, 8914, 8898,
+ 8882, 8866, 8850, 8834, 8818, 8802, 8786, 8770, 8754, 8738,
+ 8722, 8706, 8690, 8674, 8658, 8642, 8626, 8610, 8594, 8578,
+ 8562, 8546, 8530, 8514, 8498, 8482, 8466, 8450, 8434, 8418,
+ 8402, 8386, 8370, 8354, 8338, 8322, 8306, 8290, 8274, 8258,
+ 8242, 8226, 8210, 8194, 8178, 8162, 8146, 8130, 8114, 8098,
+ 8082, 8066, 8050, 8034, 8018, 8002, 7986, 7970, 7954, 7938,
+ 7922, 7906, 7890, 7874, 7858, 7842, 7826, 7810, 7794, 7778,
+ 7762, 7746, 7730, 7714, 7698, 7682, 7666, 7650, 7634, 7618,
+ 7602, 7586, 7570, 7554, 7538, 7522, 7506, 7490, 7474, 7458,
+ 7442, 7426, 7410, 7394, 7378, 7362, 7346, 7330, 7314, 7298,
+ 7282, 7266, 7250, 7234, 7218, 7202, 7186, 7170, 7154, 7138,
+ 7122, 7106, 7090, 7074, 7058, 7042, 7026, 7010, 6994, 6978,
+ 6962, 6946, 6930, 6914, 6898, 6882, 6866, 6850, 6834, 6818,
+ 6802, 6786, 6770, 6754, 6738, 6722, 6706, 6690, 6674, 6658,
+ 6642, 6626, 6610, 6594, 6578, 6562, 6546, 6530, 6514, 6498,
+ 6482, 6466, 6450, 6434, 6418, 6402, 6386, 6370, 6354, 6338,
+ 6322, 6306, 6290, 6274, 6258, 6242, 6226, 6210, 6194, 6178,
+ 6162, 6146, 6130, 6114, 6098, 6082, 6066, 6050, 6034, 6018,
+ 6002, 5986, 5970, 5954, 5938, 5922, 5906, 5890, 5874, 5858,
+ 5842, 5826, 5810, 5794, 5778, 5762, 5746, 5730, 5714, 5698,
+ 5682, 5666, 5650, 5634, 2835, 2819, 2803, 2787, 2771, 2755,
+ 2739, 2723, 2707, 2691, 2675, 2659, 2643, 2627, 2611, 2595,
+ 2579, 2563, 3544, 2531, 2515, 2499, 3483, 2220, 2204, 2188,
+ 2172, 2156, 2140, 2124, 2108, 2092, 5122, 2869, 5106, 5100,
+ 2836, 2111, 2095, 2079, 2063, 2047, 2031, 2946, 1884, 1980,
+ 1967, 1951, 1935, 1919, 1903, 1887, 1871, 1855, 1839, 1823,
+ 1807, 1791, 1775, 1759, 1743, 1727, 1711, 1695, 1679, 1663,
+ 1647, 1633, 1500, 1599, 1583, 1567, 1551, 1533, 1519, 1503,
+ 2412, 1356, 1340, 2473, 1638, 1292, 2072, 4348, 4344, 3614,
+ 4328, 2227, 1295, 1279, 1263, 1247, 1231, 1215, 1199, 2172,
+ 1941, 295, 340, 340, 378, 4104, 2137, 2221, 1171, 1157,
+ 1139, 1107, 451, 907, 3976, 819,
+};
+
+static const jchar blocks1[] = {
+ 0, 65535, 63, 4, 4, 253, 189, 125, 61, 65533,
+ 65469, 65405, 65405, 65266, 65325, 65149, 64639, 64623, 65133, 64893,
+ 64829, 64765, 64701, 64637, 64573, 64509, 64445, 64381, 64317, 64253,
+ 64189, 64125, 64301, 63997, 63933, 63869, 63805, 63741, 63677, 63613,
+ 63549, 63485, 63421, 63357, 63293, 63229, 63165, 63101, 63037, 62973,
+ 62909, 62845, 62781, 62717, 62653, 62589, 62525, 62461, 62397, 62333,
+ 62269, 62205, 62141, 62077, 62013, 61949, 61885, 61821, 61757, 61693,
+ 61629, 61565, 61501, 61437, 61373, 61309, 61245, 61181, 61117, 61053,
+ 60989, 60925, 60861, 60797, 60733, 60669, 60605, 60541, 60477, 60413,
+ 60349, 60285, 60221, 60157, 60093, 60029, 59965, 59901, 59837, 59773,
+ 59709, 59645, 59581, 59517, 59453, 59389, 59325, 59261, 59197, 59133,
+ 59069, 59005, 58941, 58877, 58813, 58749, 58685, 58621, 58557, 58493,
+ 58429, 58365, 58301, 58237, 58173, 58109, 58045, 57981, 57917, 57853,
+ 57789, 57725, 57661, 57597, 57533, 57469, 57405, 57341, 57277, 57213,
+ 57149, 57085, 57021, 56957, 56893, 56829, 56765, 56701, 56637, 56573,
+ 56509, 56445, 56381, 56317, 56253, 56189, 56125, 56061, 55997, 55933,
+ 55869, 55805, 55741, 55677, 55613, 55549, 55485, 55421, 55357, 55293,
+ 55229, 55165, 55101, 55037, 54973, 54909, 54845, 54781, 54717, 54653,
+ 54589, 54525, 54461, 54397, 54333, 54269, 54205, 54141, 54077, 54013,
+ 53949, 53885, 53821, 53757, 53693, 53629, 53565, 53501, 53437, 53373,
+ 53309, 53245, 53181, 53117, 53053, 52989, 52925, 52861, 52797, 52733,
+ 52669, 52605, 52541, 52477, 52413, 52349, 52285, 52221, 52157, 52093,
+ 52029, 51965, 51901, 51837, 51773, 51709, 51645, 51581, 51517, 51453,
+ 51389, 51325, 51261, 51197, 51133, 51069, 51005, 50941, 50877, 50813,
+ 50749, 50685, 50621, 50557, 50493, 50429, 50365, 50301, 50237, 50173,
+ 50109, 50045, 49981, 49917, 49853, 49789, 49725, 49661, 49597, 49533,
+ 49469, 49405, 49341, 49277, 49213, 49149, 49085, 49021, 48957, 48893,
+ 48829, 48765, 48701, 48637, 48573, 48509, 48445, 48381, 48317, 48253,
+ 48189, 48125, 48061, 47997, 47933, 47869, 47805, 47741, 47677, 47613,
+ 47549, 47485, 47421, 47357, 47293, 47229, 47165, 47101, 47037, 46973,
+ 46909, 46845, 46781, 46717, 46653, 46589, 46525, 46461, 46397, 46333,
+ 46269, 46205, 46141, 46077, 46013, 45949, 45885, 45821, 45757, 45693,
+ 45629, 45565, 45501, 45437, 45373, 45309, 45245, 45181, 45117, 45053,
+ 44989, 44925, 44861, 44797, 44733, 44669, 44605, 44541, 44477, 44413,
+ 44349, 44285, 44221, 44157, 44093, 44029, 43965, 43901, 43837, 43773,
+ 43709, 43645, 43581, 43517, 43453, 43389, 43325, 43261, 43197, 43133,
+ 43069, 43005, 42941, 42877, 42813, 42749, 42685, 42621, 42557, 42493,
+ 42429, 42365, 42301, 42237, 42173, 42109, 42045, 41981, 41917, 41853,
+ 41789, 41725, 41661, 41597, 41533, 41469, 41405, 41341, 41277, 41213,
+ 41149, 41085, 41021, 40957, 40893, 40829, 40765, 40701, 40637, 40573,
+ 40509, 40445, 40381, 40317, 40253, 40189, 40125, 40061, 39997, 39933,
+ 39869, 39805, 39741, 39677, 39613, 39549, 39485, 39421, 39357, 39293,
+ 39229, 39165, 39101, 39037, 38973, 38909, 38845, 38781, 38717, 38653,
+ 38589, 38525, 38461, 38397, 38333, 38269, 38205, 38141, 38077, 38013,
+ 37949, 37885, 37821, 37757, 37693, 37629, 37565, 37501, 37437, 37373,
+ 37309, 37245, 37181, 37117, 37053, 36989, 36925, 36861, 36797, 36733,
+ 36669, 36605, 36541, 36477, 36413, 36349, 36285, 36221, 36157, 36093,
+ 36029, 35965, 35901, 35837, 35773, 35709, 35645, 35581, 35517, 35453,
+ 35389, 35325, 35261, 35197, 35133, 35069, 35005, 34941, 34877, 34813,
+ 34749, 34685, 34621, 34557, 34493, 34429, 34365, 34301, 34237, 34173,
+ 34109, 34045, 33981, 33917, 33853, 33789, 33725, 33661, 33597, 33533,
+ 33469, 33405, 33341, 33277, 33213, 33149, 33085, 33021, 32957, 32893,
+ 32829, 32765, 32701, 32637, 32573, 32509, 32445, 32381, 32317, 32253,
+ 32189, 32125, 32061, 31997, 31933, 31869, 31805, 31741, 31677, 31613,
+ 31549, 31485, 31421, 31357, 31293, 31229, 31165, 31101, 31037, 30973,
+ 30909, 30845, 30781, 30717, 30653, 30589, 30525, 30461, 30397, 30333,
+ 30269, 30205, 30141, 30077, 30013, 29949, 29885, 29821, 29757, 29693,
+ 29629, 29565, 29501, 29437, 29373, 29309, 29245, 29181, 29117, 29053,
+ 28989, 28925, 28861, 28797, 28733, 28669, 28605, 28541, 28477, 28413,
+ 28349, 28285, 28221, 28157, 28093, 28029, 27965, 27901, 27837, 27773,
+ 27709, 27645, 27581, 27517, 27453, 27389, 27325, 27261, 27197, 27133,
+ 27069, 27005, 26941, 26877, 26813, 26749, 26685, 26621, 26557, 26493,
+ 26429, 26365, 26301, 26237, 26173, 26109, 26045, 25981, 25917, 25853,
+ 25789, 25725, 25661, 25597, 25533, 25469, 25405, 25341, 25277, 25213,
+ 25149, 25085, 25021, 24957, 24893, 24829, 24765, 24701, 24637, 24573,
+ 24509, 24445, 24381, 24317, 24253, 24189, 24125, 24061, 23997, 23933,
+ 23869, 23805, 23741, 23677, 23613, 23549, 23485, 23421, 23357, 23293,
+ 23229, 23165, 23101, 23037, 22973, 22909, 22845, 22781, 22717, 22653,
+ 22589, 22525, 22461, 22397, 22333, 22269, 22205, 22141, 22077, 22013,
+ 21949, 21885, 21821, 21757, 21693, 21629, 21565, 21501, 21437, 21373,
+ 21309, 21245, 21181, 21117, 21053, 20989, 20925, 20861, 20797, 20733,
+ 20669, 20605, 20541, 20477, 20413, 20349, 20285, 20221, 20157, 20093,
+ 20029, 19965, 19901, 19837, 19773, 19709, 19645, 19581, 19517, 19453,
+ 19389, 19325, 19261, 19197, 19133, 19069, 19005, 18941, 18877, 18813,
+ 18749, 18685, 18621, 18557, 18493, 18429, 18365, 18301, 18237, 18173,
+ 18109, 18045, 17981, 17917, 17853, 17789, 17725, 17661, 17597, 17533,
+ 17469, 17405, 17341, 17277, 17213, 17149, 17085, 17021, 16957, 16893,
+ 16829, 16765, 16701, 16637, 16573, 16509, 16445, 16381, 16317, 16253,
+ 16189, 16125, 16061, 15997, 15933, 15869, 15805, 15741, 15677, 15613,
+ 15549, 15485, 15421, 15357, 15293, 15229, 15165, 15101, 15037, 14973,
+ 14909, 14845, 14781, 14717, 14653, 14589, 14525, 14461, 14397, 14333,
+ 14269, 14205, 14141, 14077, 14013, 13949, 13885, 13821, 13757, 13693,
+ 13629, 13565, 13501, 13437, 13373, 13309, 13245, 13181, 13117, 13053,
+ 12989, 12925, 12752, 12688, 12624, 12570, 12454, 12283, 12280, 12338,
+ 12349, 12285, 12221, 12157, 12397, 12374, 11965, 11901, 12340, 12394,
+ 12451, 12132, 12384, 12197, 11976, 11924, 11820, 11768, 11768, 11542,
+ 11484, 11426, 11368, 11744, 10813, 10749, 10685, 10621, 10557, 10493,
+ 10429, 10365, 10301, 10237, 10173, 10109, 10045, 9981, 9917, 9853,
+ 9789, 9725, 9661, 9597, 9533, 9469, 9405, 9341, 9277, 9213,
+ 9149, 9085, 9021, 8957, 8893, 8829, 8765, 8701, 8637, 8573,
+ 8509, 8445, 8381, 8317, 8253, 8189, 8125, 8061, 7997, 7933,
+ 7869, 7805, 7741, 7677, 7613, 7549, 7485, 7421, 7357, 7293,
+ 7229, 7165, 7101, 7037, 6973, 6909, 6845, 6781, 6717, 6653,
+ 6589, 6525, 6461, 6397, 6333, 6269, 6205, 6141, 6077, 6013,
+ 5949, 5885, 5821, 5757, 5693, 5629, 5565, 5501, 5437, 5373,
+ 5309, 5245, 5181, 5117, 5053, 4989, 4925, 4861, 4797, 4733,
+ 4669, 4605, 4541, 4477, 4413, 4349, 4285, 4221, 4157, 4093,
+ 4029, 3965, 3901, 3837, 3773, 3709, 3645, 3581, 3517, 3453,
+ 3389, 3325, 3261, 3197, 3133, 3069, 3005, 2941, 2877, 2813,
+ 2749, 2685, 2621, 2557, 2493, 2429, 2365, 2301, 2237, 2173,
+ 2109, 2045, 1981, 1917, 1853, 1789, 1725, 1661, 1597, 1533,
+ 1469, 1405, 1341, 1277, 1213, 1149, 1085, 1021, 957, 893,
+ 829, 765, 701, 637,
+};
+
+static const jchar blocks2[] = {
+ 0, 65408, 65280, 65152, 65024, 64896, 64768, 64640, 64512, 64384,
+ 64256, 64128, 64000, 63872, 63744, 63616, 63488, 63360, 63232, 63104,
+ 62976, 62848, 62720, 62592, 62464, 62336, 62208, 62080, 61952, 61824,
+ 61696, 61568, 61440, 61312, 61184, 61056, 60928, 60800, 60672, 60544,
+ 60416, 60288, 60160, 60032, 59904, 59776, 59648, 59520, 59392, 59264,
+ 59136, 59008, 58880, 58752, 58624, 58496, 58368, 58240, 58112, 57984,
+ 57856, 57728, 57600, 57472, 57344, 57216, 57088, 56960, 56832, 56704,
+ 56576, 56448, 56320, 56192, 56064, 55936, 55808, 55680, 55552, 55424,
+ 55296, 55168, 55040, 54912, 54784, 54656, 54528, 54400, 54272, 54144,
+ 54016, 53888, 53760, 53632, 53504, 53376, 53248, 53120, 52992, 52864,
+ 52736, 52608, 52480, 52352, 52224, 52096, 51968, 51840, 51712, 51584,
+ 51456, 51328, 51200, 51072, 50944, 50816, 50688, 50560, 50432, 50304,
+ 50176, 50048, 49920, 49792, 49664, 49536, 49408, 49280, 49152, 49024,
+ 48896, 48768, 48640, 48512, 48384, 48256, 48128, 48000, 47872, 47744,
+ 47616, 47488, 47360, 47232, 47104, 46976, 46848, 46720, 46592, 46464,
+ 46336, 46208, 46080, 45952, 45824, 45696, 45568, 45440, 45312, 45184,
+ 45056, 44928, 44800, 44672, 44544, 44416, 44288, 44160, 44032, 43904,
+ 43776, 43648, 43520, 43392, 43264, 43136, 43008, 42880, 42752, 42624,
+ 42496, 42368, 42240, 42112, 41984, 41856, 41728, 41600, 41472, 41344,
+ 41216, 41088, 40960, 40832, 40704, 40576, 40448, 40320, 40192, 40064,
+ 39936, 39808, 39680, 39552, 39424, 39296, 39168, 39040, 38912, 38784,
+ 38656, 38528, 38400, 38272, 38144, 38016, 37888, 37760, 37632, 37504,
+ 37376, 37248, 37120, 36992, 36864, 36736, 36608, 36480, 36352, 36224,
+ 36096, 35968, 35840, 35712, 35584, 35456, 35328, 35200, 35072, 34944,
+ 34816, 34688, 34560, 34432, 34304, 34176, 34048, 33920, 33792, 33664,
+ 33536, 33408, 33280, 33152, 33024, 32896, 32768, 32640, 32512, 32384,
+ 32256, 32128, 32000, 31872, 31744, 31616, 31488, 31360, 31232, 31104,
+ 30976, 30848, 30720, 30592, 30464, 30336, 30208, 30080, 29952, 29824,
+ 29696, 29568, 29440, 29312, 29184, 29056, 28928, 28800, 28672, 28544,
+ 28416, 28288, 28160, 28032, 27904, 27776, 27648, 27520, 27392, 27264,
+ 27136, 27008, 26880, 26752, 26624, 26496, 26368, 26240, 26112, 25984,
+ 25856, 25728, 25600, 25472, 25344, 25216, 25088, 24960, 24832, 24704,
+ 24576, 24448, 24320, 24192, 24064, 23936, 23808, 23680, 23552, 23424,
+ 23296, 23168, 23040, 22953, 22912, 22784, 22656, 22528, 22400, 22272,
+ 22144, 22016, 21888, 21760, 21632, 21504, 21376, 21248, 21120, 20992,
+ 20864, 20736, 20608, 20480, 20352, 20224, 20096, 19968, 19840, 19712,
+ 19584, 19456, 19328, 19200, 19072, 18944, 18816, 18688, 18560, 18432,
+ 18304, 18176, 18048, 17920, 17792, 17664, 17536, 17408, 17280, 17152,
+ 17024, 16896, 16768, 16640, 16512, 16384, 16256, 16128, 16000, 15872,
+ 15744, 15616, 15488, 15360, 15232, 15104, 14976, 14848, 14720, 14592,
+ 14464, 14336, 14208, 14080, 13952, 13824, 13696, 13568, 13440, 13312,
+ 13184, 13056, 12928, 12800, 12672, 12544, 12416, 12288, 12160, 12032,
+ 11904, 11776, 11648, 11520, 11392, 11264, 11136, 11008, 10880, 10752,
+ 10624, 10496, 10368, 10240, 10112, 9984, 9856, 9728, 9600, 9472,
+ 9344, 9216, 9088, 8960, 8832, 8704, 8576, 8448, 8320, 8192,
+ 8064, 7936, 7808, 7680, 7552, 7424, 7296, 7168, 7040, 6912,
+ 6784, 6656, 6528, 6400, 6272, 6144, 6016, 5888, 5760, 5632,
+ 5504, 5376, 5248, 5120, 4992, 4864, 4736, 4608, 4480, 4352,
+ 4224, 4096, 3968, 3840, 3712, 3584, 3456, 3328, 3200, 3072,
+ 2944, 2816, 2688, 2560, 2432, 2304, 2048, 1920, 1792, 1664,
+ 1634, 1536, 1408, 1280, 1152, 1024, 896, 768, 640, 512,
+ 384, 256,
+};
+
+static const jchar blocks14[] = {
+ 255, 0, 65280, 65168, 65152, 65024, 64896, 64768, 64640, 64512,
+ 64384, 64256, 64128, 64000, 63872, 63744, 63616, 63488, 63360, 63232,
+ 63104, 62976, 62848, 62720, 62592, 62464, 62336, 62208, 62080, 61952,
+ 61824, 61696, 61568, 61440, 61312, 61184, 61056, 60928, 60800, 60672,
+ 60544, 60416, 60288, 60160, 60032, 59904, 59776, 59648, 59520, 59392,
+ 59264, 59136, 59008, 58880, 58752, 58624, 58496, 58368, 58240, 58112,
+ 57984, 57856, 57728, 57600, 57472, 57344, 57216, 57088, 56960, 56832,
+ 56704, 56576, 56448, 56320, 56192, 56064, 55936, 55808, 55680, 55552,
+ 55424, 55296, 55168, 55040, 54912, 54784, 54656, 54528, 54400, 54272,
+ 54144, 54016, 53888, 53760, 53632, 53504, 53376, 53248, 53120, 52992,
+ 52864, 52736, 52608, 52480, 52352, 52224, 52096, 51968, 51840, 51712,
+ 51584, 51456, 51328, 51200, 51072, 50944, 50816, 50688, 50560, 50432,
+ 50304, 50176, 50048, 49920, 49792, 49664, 49536, 49408, 49280, 49152,
+ 49024, 48896, 48768, 48640, 48512, 48384, 48256, 48128, 48000, 47872,
+ 47744, 47616, 47488, 47360, 47232, 47104, 46976, 46848, 46720, 46592,
+ 46464, 46336, 46208, 46080, 45952, 45824, 45696, 45568, 45440, 45312,
+ 45184, 45056, 44928, 44800, 44672, 44544, 44416, 44288, 44160, 44032,
+ 43904, 43776, 43648, 43520, 43392, 43264, 43136, 43008, 42880, 42752,
+ 42624, 42496, 42368, 42240, 42112, 41984, 41856, 41728, 41600, 41472,
+ 41344, 41216, 41088, 40960, 40832, 40704, 40576, 40448, 40320, 40192,
+ 40064, 39936, 39808, 39680, 39552, 39424, 39296, 39168, 39040, 38912,
+ 38784, 38656, 38528, 38400, 38272, 38144, 38016, 37888, 37760, 37632,
+ 37504, 37376, 37248, 37120, 36992, 36864, 36736, 36608, 36480, 36352,
+ 36224, 36096, 35968, 35840, 35712, 35584, 35456, 35328, 35200, 35072,
+ 34944, 34816, 34688, 34560, 34432, 34304, 34176, 34048, 33920, 33792,
+ 33664, 33536, 33408, 33280, 33152, 33024, 32896, 32768, 32640, 32512,
+ 32384, 32256, 32128, 32000, 31872, 31744, 31616, 31488, 31360, 31232,
+ 31104, 30976, 30848, 30720, 30592, 30464, 30336, 30208, 30080, 29952,
+ 29824, 29696, 29568, 29440, 29312, 29184, 29056, 28928, 28800, 28672,
+ 28544, 28416, 28288, 28160, 28032, 27904, 27776, 27648, 27520, 27392,
+ 27264, 27136, 27008, 26880, 26752, 26624, 26496, 26368, 26240, 26112,
+ 25984, 25856, 25728, 25600, 25472, 25344, 25216, 25088, 24960, 24832,
+ 24704, 24576, 24448, 24320, 24192, 24064, 23936, 23808, 23680, 23552,
+ 23424, 23296, 23168, 23040, 22912, 22784, 22656, 22528, 22400, 22272,
+ 22144, 22016, 21888, 21760, 21632, 21504, 21376, 21248, 21120, 20992,
+ 20864, 20736, 20608, 20480, 20352, 20224, 20096, 19968, 19840, 19712,
+ 19584, 19456, 19328, 19200, 19072, 18944, 18816, 18688, 18560, 18432,
+ 18304, 18176, 18048, 17920, 17792, 17664, 17536, 17408, 17280, 17152,
+ 17024, 16896, 16768, 16640, 16512, 16384, 16256, 16128, 16000, 15872,
+ 15744, 15616, 15488, 15360, 15232, 15104, 14976, 14848, 14720, 14592,
+ 14464, 14336, 14208, 14080, 13952, 13824, 13696, 13568, 13440, 13312,
+ 13184, 13056, 12928, 12800, 12672, 12544, 12416, 12288, 12160, 12032,
+ 11904, 11776, 11648, 11520, 11392, 11264, 11136, 11008, 10880, 10752,
+ 10624, 10496, 10368, 10240, 10112, 9984, 9856, 9728, 9600, 9472,
+ 9344, 9216, 9088, 8960, 8832, 8704, 8576, 8448, 8320, 8192,
+ 8064, 7936, 7808, 7680, 7552, 7424, 7296, 7168, 7040, 6912,
+ 6784, 6656, 6528, 6400, 6272, 6144, 6016, 5888, 5760, 5632,
+ 5504, 5376, 5248, 5120, 4992, 4864, 4736, 4608, 4480, 4352,
+ 4224, 4096, 3968, 3840, 3712, 3584, 3456, 3328, 3200, 3072,
+ 2944, 2816, 2688, 2560, 2432, 2304, 2176, 2048, 1920, 1792,
+ 1664, 1536, 1408, 1280, 1152, 1024, 896, 768, 640, 512,
+ 384, 256,
+};
+
+static const int blocks_length[] = {
+ 4096, 1024, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 512, -1, -1, };
+static const jchar* blocks[] = {
+ blocks0, blocks1, blocks2, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, blocks14, NULL, NULL};
+
+/**
+ * Information about each character. The low order 5 bits form the
+ * character type, the next bit is a flag for non-breaking spaces, and the
+ * next bit is a flag for mirrored directionality. The high order 9 bits
+ * form the offset into the attribute tables. Note that this limits the
+ * number of unique character attributes per plane to 512, which is not a
+ * problem as of Unicode version 4.0.0, but may soon become one.
+ */
+static const jchar data0[] = {
+ 8834, 8962, 9090, 9218, 9346, 9474, 9602, 9730, 9858, 9986,
+ 10114, 1109, 3225, 1238, 3225, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 143, 271, 143, 399, 271, 15,
+ 15, 15, 15, 15, 271, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 271, 271, 271, 143, 1801, 1929, 2057, 2185, 2313,
+ 2441, 2569, 2697, 2825, 2953, 1432, 664, 3161, 3225, 3161,
+ 664, 664, 3225, 664, 6807, 16256, 16256, 664, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 524, 664, 664, 792, 922,
+ 792, 664, 664, 1109, 1238, 664, 1305, 1432, 1556, 1432,
+ 1688, 10908, 1305, 11019, 11147, 6683, 11266, 10396, 664, 6683,
+ 11403, 10498, 11614, 11659, 11659, 11659, 664, 3329, 3457, 3585,
+ 3713, 3841, 3969, 4097, 4225, 4353, 4481, 4609, 4737, 4865,
+ 4993, 5121, 5249, 5377, 5505, 5633, 5761, 5889, 6017, 6145,
+ 6273, 6401, 6529, 1109, 664, 1238, 6683, 6807, 664, 664,
+ 664, 3225, 1109, 1238, 664, 664, 664, 664, 664, 664,
+ 664, 664, 664, 34189, 34318, 34448, 34576, 34704, 34832, 34960,
+ 33452, 10284, 664, 922, 922, 922, 922, 10396, 10396, 6683,
+ 10396, 10498, 10717, 3225, 10768, 10396, 6683, 6914, 7042, 7170,
+ 7298, 7426, 7554, 7682, 7810, 7938, 8066, 8194, 8322, 8450,
+ 8578, 8706, 19074, 11777, 11777, 11777, 11777, 11777, 11777, 11777,
+ 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11777, 3225,
+ 11777, 11777, 11777, 11777, 11777, 11777, 11777, 11906, 15361, 15491,
+ 15618, 12289, 12418, 15873, 16001, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 12801, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12930, 19074, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034,
+ 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 3225, 12034,
+ 12034, 12034, 12034, 12034, 12034, 12034, 12162, 16129, 10498, 12289,
+ 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 12289,
+ 12418, 12289, 12418, 12289, 12418, 15746, 12289, 12418, 21404, 18310,
+ 18310, 18310, 18310, 16256, 21511, 21511, 12289, 12418, 12289, 12418,
+ 12289, 12418, 16256, 16256, 12289, 12418, 16256, 16256, 16256, 16256,
+ 16256, 16256, 18310, 24584, 16256, 16256, 16256, 16256, 15109, 15109,
+ 16256, 15109, 16256, 16256, 15109, 15109, 16256, 15109, 16256, 16256,
+ 15109, 16256, 16256, 11906, 32258, 11906, 16256, 11906, 19074, 33153,
+ 33153, 33281, 33281, 32515, 6683, 6683, 16256, 18310, 18310, 24584,
+ 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 16256, 15109, 16256, 15109, 15109, 15109, 15109, 16256, 16256, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 16256, 15109,
+ 15109, 15109, 15109, 15109, 15109, 16256, 16256, 15109, 15109, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 21784, 21784, 15109, 15109, 15109, 15109, 15361, 15491, 15618, 15361,
+ 15491, 15618, 15361, 15491, 15618, 12289, 12418, 12289, 12418, 10498,
+ 10498, 10498, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 15109, 15109, 15109, 15109, 16256, 15109, 16256, 15109, 15109,
+ 16256, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 18310, 15109,
+ 24584, 24584, 18310, 18310, 18310, 16256, 16256, 16256, 24584, 24584,
+ 16256, 16256, 24584, 24584, 18310, 16256, 16256, 12545, 12674, 12289,
+ 12418, 12289, 12418, 12289, 12418, 10498, 12289, 12418, 12289, 12418,
+ 12289, 12418, 12289, 12418, 11906, 11906, 11906, 11906, 11906, 30850,
+ 16256, 16256, 16256, 16256, 6683, 6683, 16256, 16256, 16256, 16256,
+ 18052, 16256, 16256, 16256, 664, 16256, 21633, 21633, 21633, 21633,
+ 21633, 21633, 21633, 21633, 21633, 21633, 21633, 21633, 21633, 21633,
+ 21633, 21633, 16256, 16256, 18052, 21784, 21784, 21784, 21784, 21784,
+ 21784, 21404, 21404, 21404, 21404, 21404, 18310, 18310, 21404, 21404,
+ 21404, 21404, 21404, 21404, 18310, 21404, 21404, 21404, 21404, 21404,
+ 21404, 16256, 16256, 21404, 15109, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 19842, 19970, 20097, 20097, 20097, 20226, 20354, 10498, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418, 11906, 12289,
+ 12418, 12289, 12418, 12289, 12418, 14721, 12289, 12418, 14721, 10498,
+ 10498, 12289, 12418, 14721, 12289, 17666, 10498, 10498, 17666, 10498,
+ 10498, 10498, 10498, 17666, 10498, 17794, 17794, 10498, 10498, 10498,
+ 10498, 17410, 10498, 10498, 17538, 10498, 10498, 10498, 10498, 10498,
+ 10498, 10498, 10498, 10498, 10498, 16386, 16514, 10498, 16642, 16642,
+ 10498, 16770, 10498, 16898, 10498, 10498, 10498, 10498, 13057, 12289,
+ 12418, 12289, 12418, 13185, 12289, 12418, 13313, 13313, 12289, 12418,
+ 10498, 13441, 13569, 13697, 12289, 12418, 13313, 13825, 13954, 14081,
+ 14209, 12289, 12418, 10498, 10498, 14081, 14337, 14466, 14593, 12418,
+ 14849, 14849, 12289, 12418, 12289, 12418, 14977, 12289, 12418, 10498,
+ 15109, 12289, 12418, 10498, 15234, 18310, 18310, 18310, 18310, 18310,
+ 18438, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310,
+ 18310, 16256, 18310, 18310, 18310, 22168, 18310, 18310, 22168, 18310,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 24584, 16256, 16256, 16256, 16256, 15109, 15109, 16256, 15109,
+ 15109, 15109, 15109, 16256, 16256, 16256, 15109, 15109, 16256, 15109,
+ 16256, 15109, 15109, 16256, 15109, 15109, 16256, 15109, 15109, 16256,
+ 16256, 18310, 16256, 24584, 24584, 24584, 16256, 15109, 15109, 15109,
+ 15109, 15109, 15109, 15109, 15109, 16256, 15109, 15109, 15109, 16256,
+ 16256, 16256, 16256, 24584, 24584, 21784, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 24464, 24464, 24464, 10396, 10396, 16256, 16256, 16256,
+ 664, 664, 24713, 24841, 24969, 25097, 25225, 25353, 25481, 25609,
+ 25737, 25865, 16256, 16256, 16256, 16256, 16256, 16256, 18310, 15109,
+ 16256, 15109, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 16256,
+ 15109, 15109, 16256, 16256, 16256, 15109, 15109, 15109, 16256, 16256,
+ 16256, 15109, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 15109,
+ 15109, 15109, 16256, 16256, 16256, 21890, 21890, 21890, 21890, 21890,
+ 21890, 21890, 21890, 21890, 21890, 21890, 21890, 21890, 21890, 21890,
+ 21890, 11906, 16256, 21784, 22036, 16256, 16256, 16256, 16256, 16256,
+ 18310, 18310, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661,
+ 22661, 22661, 22661, 22661, 22661, 22661, 22661, 27541, 27670, 16642,
+ 10498, 10498, 17026, 10498, 10498, 10498, 10498, 17154, 17282, 10498,
+ 10498, 10498, 10498, 10498, 17282, 22416, 22416, 22416, 22416, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 1432, 22552, 10396,
+ 10396, 20097, 10396, 10396, 10396, 10396, 20097, 10396, 10396, 10498,
+ 20097, 20097, 20097, 10498, 10498, 17922, 10498, 10498, 10498, 10498,
+ 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498,
+ 10498, 10498, 18052, 18052, 18052, 18052, 18052, 18052, 18052, 18052,
+ 18052, 18052, 18052, 18052, 18052, 18052, 18052, 18052, 18180, 18180,
+ 18052, 18052, 18052, 18052, 18052, 6683, 6683, 6683, 6683, 6683,
+ 6683, 6683, 6683, 6683, 18052, 6683, 22036, 15109, 15109, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 18052,
+ 18052, 6683, 6683, 6683, 6683, 18180, 18180, 18180, 18180, 18180,
+ 18180, 18180, 18180, 18180, 18180, 18052, 18052, 6683, 6683, 6683,
+ 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683, 6683,
+ 6683, 6683, 6683, 11906, 32258, 11906, 16256, 11906, 19074, 32769,
+ 32769, 32769, 32769, 32515, 6683, 6683, 6683, 10396, 44170, 44298,
+ 44426, 44554, 44682, 44810, 44938, 45066, 45194, 18310, 18310, 18310,
+ 18310, 18310, 18310, 18310, 18310, 16256, 18310, 18310, 18310, 18310,
+ 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310,
+ 18310, 18310, 16256, 21404, 21404, 25995, 26123, 26251, 26379, 21404,
+ 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404,
+ 10396, 3225, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 16256, 10396, 16256, 10396, 10396, 10396,
+ 10396, 16256, 10396, 10396, 10396, 10396, 16256, 16256, 10396, 10396,
+ 10396, 10396, 10396, 21404, 10396, 10396, 10396, 10396, 10396, 3225,
+ 3225, 3225, 3225, 3225, 27541, 27670, 664, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16256, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 1109, 1238, 1109, 1238, 1109,
+ 1238, 1109, 1238, 29579, 29707, 29835, 29963, 30091, 30219, 30347,
+ 30475, 30603, 43915, 29579, 29707, 29835, 29963, 30091, 30219, 18310,
+ 18310, 18310, 18310, 18310, 18310, 18310, 18310, 16256, 16256, 16256,
+ 16256, 16256, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310,
+ 18310, 18310, 18310, 18310, 18310, 18310, 24584, 24584, 16256, 16256,
+ 16256, 24584, 24584, 24584, 16256, 24584, 24584, 24584, 18310, 16256,
+ 16256, 18310, 24584, 24584, 16256, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 15109, 16256, 16256, 15109, 15109, 15109, 16256, 15109,
+ 16256, 15109, 16256, 16256, 15109, 15109, 16256, 15109, 15109, 15109,
+ 15109, 15109, 16256, 15109, 15109, 16256, 24584, 18310, 18310, 18310,
+ 18310, 16256, 16256, 24584, 24584, 16256, 16256, 24584, 24584, 18310,
+ 16256, 16256, 20482, 20610, 20738, 10498, 20865, 20994, 3225, 12289,
+ 12418, 21121, 12289, 12418, 16256, 16256, 16256, 16256, 6683, 6683,
+ 18561, 664, 18689, 18689, 18689, 16256, 18817, 16256, 18945, 18945,
+ 11777, 11777, 16256, 11777, 11777, 11777, 11777, 11777, 11777, 11777,
+ 11777, 11777, 19202, 19330, 19330, 19330, 12034, 12034, 19458, 12034,
+ 12034, 12034, 12034, 12034, 12034, 12034, 12034, 12034, 19586, 19714,
+ 19714, 16256, 18310, 18310, 24584, 16256, 15109, 15109, 15109, 15109,
+ 15109, 15109, 16256, 16256, 16256, 16256, 15109, 15109, 15109, 15109,
+ 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 16256, 15109, 16256, 16256, 16256, 15109, 15109, 15109, 15109, 16256,
+ 16256, 18310, 15109, 24584, 24584, 18310, 24584, 24584, 24584, 24584,
+ 24584, 24584, 18310, 18310, 18310, 16256, 16256, 16256, 16256, 21249,
+ 21249, 21249, 21249, 21249, 21249, 21249, 21249, 21249, 21249, 21249,
+ 21249, 21249, 21249, 21249, 21249, 20610, 20610, 20610, 20610, 20610,
+ 20610, 20610, 20610, 20610, 20610, 20610, 20610, 20610, 20610, 20610,
+ 20610, 20097, 12289, 12418, 12289, 12418, 12289, 12418, 12289, 12418,
+ 12289, 12418, 12289, 12418, 12289, 12418, 16256, 16256, 16256, 16256,
+ 16256, 16256, 24713, 24841, 24969, 25097, 25225, 25353, 25481, 25609,
+ 25737, 25865, 27403, 27403, 27403, 27403, 27403, 27403, 21404, 18310,
+ 21404, 18310, 21404, 18310, 27541, 27670, 27541, 27670, 24584, 24584,
+ 18310, 18310, 18310, 16256, 18310, 16256, 24584, 24584, 24584, 24584,
+ 24584, 24584, 24584, 24584, 18310, 24584, 24584, 18310, 18310, 18310,
+ 18310, 18310, 18310, 18310, 18310, 24584, 24584, 24584, 24584, 18310,
+ 16256, 16256, 21784, 21784, 21784, 21784, 21784, 21784, 21784, 21784,
+ 24841, 24969, 25097, 25225, 25353, 25481, 25609, 18310, 18310, 18310,
+ 18310, 18310, 18310, 18310, 18310, 18310, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 11906, 11906,
+ 11906, 11906, 11906, 16256, 16256, 16256, 16256, 16256, 22277, 18310,
+ 22277, 22277, 16256, 22277, 22277, 16256, 22277, 22277, 22277, 22277,
+ 22277, 22277, 22277, 22277, 22277, 22277, 22277, 22277, 22277, 22277,
+ 22277, 22277, 16256, 16256, 16256, 16256, 16256, 24584, 24584, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 15109, 16256, 15109, 15109,
+ 16256, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 18310, 15109,
+ 24584, 18310, 18310, 18310, 18310, 18310, 16256, 18310, 18310, 24584,
+ 16256, 24584, 24584, 18310, 16256, 16256, 664, 664, 792, 922,
+ 792, 664, 664, 1109, 1238, 664, 1305, 1432, 1556, 1432,
+ 1688, 22277, 22277, 22277, 22168, 22168, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 24584, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 11659, 11659, 11659, 11659,
+ 11659, 11659, 11659, 11659, 11659, 11659, 11659, 11659, 29579, 22921,
+ 23049, 23177, 23305, 23433, 23561, 23689, 23817, 23945, 24073, 792,
+ 24216, 24216, 22552, 22661, 22661, 22661, 22661, 22552, 22661, 18310,
+ 18310, 18310, 18310, 18310, 18310, 18310, 22416, 21511, 18310, 21511,
+ 21511, 21511, 18310, 18310, 18310, 18310, 18310, 18310, 16256, 16256,
+ 16256, 16256, 16256, 22552, 16256, 16256, 16256, 22552, 22552, 22552,
+ 22552, 22552, 22552, 22552, 22552, 22552, 22552, 22552, 22552, 22552,
+ 22552, 16256, 24464, 22788, 22661, 22661, 22661, 22661, 22661, 22661,
+ 22661, 22661, 22661, 22661, 18310, 18310, 18310, 18310, 18310, 18310,
+ 18310, 18310, 18310, 18310, 18310, 16256, 16256, 22661, 22661, 22661,
+ 22661, 22661, 16256, 22661, 22661, 22661, 22661, 22661, 22661, 22661,
+ 22661, 22661, 22661, 22661, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 24841, 24969,
+ 25097, 25225, 25353, 25481, 25609, 25737, 25865, 26763, 27787, 27915,
+ 28043, 28171, 28299, 28427, 28555, 28683, 26891, 28811, 16256, 16256,
+ 16256, 1801, 1929, 2057, 2185, 2313, 2441, 2569, 2697, 2825,
+ 2953, 22661, 22661, 22661, 24348, 24348, 22661, 18310, 22661, 22661,
+ 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661, 22661,
+ 22661, 22661, 22661, 16256, 16256, 24464, 24464, 24464, 24464, 16256,
+ 16256, 16256, 16256, 16256, 16256, 24464, 24464, 24464, 24464, 24464,
+ 24464, 18310, 18310, 18310, 18310, 18310, 22788, 22788, 18310, 18310,
+ 10396, 18310, 18310, 18310, 18310, 22661, 22661, 22661, 22661, 22661,
+ 22661, 22661, 22661, 22661, 22661, 22661, 22661, 50458, 10396, 16256,
+ 16256, 18310, 22661, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 1238, 664, 1109,
+ 1238, 664, 6807, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 15109, 16256, 16256, 16256, 16256, 24584, 24584, 16256,
+ 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 16256, 15109,
+ 15109, 15109, 15109, 15109, 16256, 16256, 16256, 16256, 18310, 18310,
+ 24584, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 15109, 27541, 27670, 16256, 16256, 16256, 524, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 15109, 15109, 16256, 16256, 16256, 16256, 16256, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 6807, 18052, 18052, 18052, 15109, 15109, 15109, 18052, 15109, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 15109, 16256, 16256, 18310, 15109, 24584, 24584, 24584,
+ 24584, 24584, 16256, 27142, 24584, 24584, 16256, 24584, 24584, 18310,
+ 18310, 16256, 16256, 16256, 16256, 18310, 18310, 16256, 16256, 18310,
+ 18310, 18310, 16256, 16256, 15109, 15109, 15109, 15109, 15109, 15109,
+ 15109, 16256, 16256, 18310, 18310, 6683, 6683, 18052, 18052, 15109,
+ 18310, 18310, 18310, 18310, 16256, 16256, 16256, 15109, 15109, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 16256, 16256, 21784, 16256,
+ 16256, 16256, 16256, 15109, 15109, 18310, 18310, 21784, 21784, 24713,
+ 24841, 24969, 25097, 25225, 25353, 25481, 25609, 25737, 25865, 21784,
+ 21784, 16256, 16256, 16256, 16256, 15109, 15109, 18310, 18310, 16256,
+ 16256, 24713, 24841, 24969, 25097, 25225, 25353, 25481, 25609, 25737,
+ 25865, 16256, 16256, 15109, 15109, 16256, 16256, 15109, 15109, 922,
+ 922, 25995, 26123, 26251, 26379, 26507, 26635, 21404, 16256, 16256,
+ 16256, 16256, 16256, 18310, 18310, 15109, 15109, 15109, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109,
+ 18310, 15109, 15109, 18310, 18310, 18310, 18310, 18310, 18310, 18310,
+ 16256, 16256, 16256, 16256, 922, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109,
+ 15109, 15109, 15109, 15109, 15109, 18052, 18310, 18310, 18310, 18310,
+ 18310, 18310, 18310, 18310, 21784, 18310, 18310, 15109, 15109, 15109,
+ 15109, 16256, 16256, 16256, 16256, 24713, 24841, 24969, 25097, 25225,
+ 25353, 25481, 25609, 25737, 25865, 21784, 21784, 21784, 21784, 21784,
+ 21784, 26763, 26891, 27019, 10396, 10396, 10396, 10396, 10396, 10396,
+ 922, 10396, 16256, 16256, 16256, 16256, 16256, 18310, 24584, 24584,
+ 24584, 24584, 16256, 18310, 18310, 18310, 16256, 18310, 18310, 18310,
+ 18310, 16256, 16256, 15109, 15109, 15109, 15109, 16256, 15109, 15109,
+ 15109, 15109, 15109, 16256, 16256, 18310, 15109, 24584, 27142, 24584,
+ 18310, 18310, 18310, 16256, 16256, 24584, 24584, 24584, 16256, 24584,
+ 24584, 24584, 18310, 16256, 16256, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 16256, 16256, 16256, 18310, 16256, 16256, 16256, 16256,
+ 24584, 24584, 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 15109, 15109, 15109, 15109, 21784, 21784, 21784, 28938, 29066, 15109,
+ 18310, 15109, 15109, 18310, 18310, 18310, 18310, 18310, 18310, 16256,
+ 18310, 18310, 15109, 16256, 16256, 15109, 15109, 15109, 15109, 15109,
+ 16256, 18052, 16256, 18310, 18310, 18310, 18310, 18310, 18310, 16256,
+ 16256, 15109, 21404, 21404, 21404, 21784, 21784, 21784, 21784, 21784,
+ 21784, 21784, 21784, 27320, 21784, 21784, 21784, 18310, 24584, 18310,
+ 16256, 16256, 16256, 18310, 18310, 24584, 18310, 16256, 16256, 16256,
+ 16256, 16256, 16256, 15109, 15109, 15109, 15109, 15109, 15109, 24584,
+ 24584, 18310, 18310, 16256, 16256, 16256, 16256, 16256, 16256, 20097,
+ 20097, 10396, 20097, 10498, 15109, 15109, 15109, 15109, 10498, 10396,
+ 10396, 16256, 10498, 20097, 20097, 20097, 20097, 20097, 20097, 20097,
+ 20097, 20097, 20097, 20097, 20097, 20097, 20097, 20097, 20097, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109,
+ 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 29194, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109, 15109, 18310,
+ 18310, 18310, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 15109, 15109, 18310, 18310, 18310, 21784, 21784,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 15109,
+ 15109, 18310, 18310, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 15109, 16256, 18310, 18310, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 15109, 15109, 15109, 15109, 29328, 29328, 24584, 18310, 18310,
+ 18310, 18310, 18310, 18310, 18310, 24584, 24584, 24584, 24584, 18310,
+ 18310, 30728, 30728, 30728, 16256, 16256, 16256, 16256, 18310, 18310,
+ 18310, 18310, 21784, 21784, 21784, 18052, 21784, 21784, 21784, 922,
+ 15109, 18310, 16256, 16256, 43275, 43403, 43531, 43659, 43787, 29579,
+ 29707, 29835, 29963, 30091, 30219, 30347, 30475, 30603, 43915, 29451,
+ 29579, 29707, 29835, 29963, 30091, 30219, 30347, 30475, 30603, 16256,
+ 16256, 16256, 16256, 16256, 16256, 664, 664, 664, 664, 664,
+ 664, 22036, 664, 664, 664, 664, 18310, 18310, 18310, 524,
+ 16256, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109, 15109,
+ 18310, 16256, 16256, 16256, 16256, 16256, 16256, 20097, 20097, 20097,
+ 10498, 10396, 20097, 10396, 10396, 10396, 20097, 20097, 20097, 20097,
+ 20097, 10396, 10396, 3225, 10396, 3225, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3161, 3161,
+ 3161, 3161, 3161, 3161, 3225, 3225, 1109, 1238, 3225, 3225,
+ 3225, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238, 1109,
+ 1238, 1109, 1238, 1109, 1238, 3225, 3225, 3161, 3161, 3161,
+ 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3161, 3225, 3161,
+ 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3225,
+ 3225, 3161, 3225, 3161, 3225, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3161, 3161, 3225, 3225, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3161, 3161, 3225, 3161, 3225, 3161, 3161, 3161, 3225,
+ 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3225, 3161,
+ 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161, 3225, 3161,
+ 3225, 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3161, 3161,
+ 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3225, 3225, 3161, 3225, 3161, 3225, 3225, 3161, 3225,
+ 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3161, 3161, 3161,
+ 3161, 3161, 3161, 3225, 3225, 3225, 3161, 3225, 3225, 3225,
+ 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3225, 3161,
+ 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3161, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3225, 3225, 3161, 3225, 3225, 3225,
+ 3225, 3225, 3225, 3225, 3161, 3161, 3225, 3225, 3225, 3225,
+ 3225, 3225, 3225, 10396, 10396, 10396, 10396, 10396, 3225, 3225,
+ 10396, 10396, 10396, 10396, 20097, 10396, 35969, 10396, 20097, 10396,
+ 36097, 36225, 20097, 20097, 10908, 10498, 18052, 18052, 10498, 10498,
+ 10498, 10498, 10498, 10498, 10498, 10498, 10498, 10498, 16256, 16256,
+ 16256, 16256, 30978, 30978, 30978, 30978, 30978, 30978, 30978, 30978,
+ 31105, 31105, 31105, 31105, 31105, 31105, 31105, 31105, 30978, 30978,
+ 30978, 30978, 30978, 30978, 16256, 16256, 31105, 31105, 31105, 31105,
+ 31105, 31105, 16256, 16256, 11906, 30978, 19074, 30978, 19074, 30978,
+ 19074, 30978, 16256, 31105, 16256, 31105, 16256, 31105, 16256, 31105,
+ 31234, 31234, 31362, 31362, 31362, 31362, 31490, 31490, 31618, 31618,
+ 31746, 31746, 31874, 31874, 16256, 16256, 32002, 32002, 32002, 32002,
+ 32002, 32002, 32002, 32002, 32131, 32131, 32131, 32131, 32131, 32131,
+ 32131, 32131, 30978, 30978, 11906, 32258, 11906, 16256, 11906, 19074,
+ 31105, 31105, 32385, 32385, 32515, 6683, 32642, 6683, 30978, 30978,
+ 19074, 19074, 16256, 16256, 11906, 19074, 31105, 31105, 32897, 32897,
+ 16256, 6683, 6683, 6683, 30978, 30978, 19074, 19074, 11906, 20738,
+ 11906, 19074, 31105, 31105, 33025, 33025, 21121, 6683, 6683, 6683,
+ 524, 524, 524, 524, 524, 524, 524, 33452, 524, 524,
+ 524, 33548, 24464, 24464, 29328, 33680, 22036, 33844, 22036, 22036,
+ 22036, 22036, 664, 664, 33949, 34078, 27541, 33949, 33949, 34078,
+ 27541, 33949, 1432, 664, 1432, 16256, 664, 1432, 664, 664,
+ 22036, 27541, 27670, 27541, 27670, 27541, 27670, 792, 792, 792,
+ 792, 792, 664, 664, 664, 664, 10717, 11614, 664, 664,
+ 664, 664, 6807, 35083, 10498, 16256, 16256, 35211, 35339, 35467,
+ 35595, 35723, 35851, 1305, 1305, 3225, 1109, 1238, 10498, 35083,
+ 11403, 11019, 11147, 35211, 35339, 35467, 35595, 35723, 35851, 1305,
+ 1305, 3225, 1109, 1238, 16256, 922, 922, 922, 922, 922,
+ 922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+ 922, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 18310, 18310, 18310, 18310, 18310,
+ 18310, 18310, 18310, 18310, 18310, 18310, 18310, 18310, 21511, 21511,
+ 21511, 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3225, 3225,
+ 3225, 3225, 3225, 3161, 3161, 3161, 3225, 3225, 3161, 3161,
+ 3161, 3161, 3225, 3225, 3225, 3225, 3225, 3225, 3225, 3225,
+ 3225, 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3225,
+ 3225, 3161, 3161, 3161, 3225, 3225, 3161, 3161, 3225, 3225,
+ 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3225, 3225, 3225,
+ 3225, 3161, 3161, 3225, 3225, 3225, 3225, 3161, 3161, 3161,
+ 3161, 3225, 3161, 1305, 1305, 3225, 3161, 3161, 3225, 3225,
+ 3225, 3161, 3161, 3161, 3161, 3225, 3161, 3225, 3161, 3225,
+ 3225, 3225, 3225, 3161, 3161, 3161, 3161, 3161, 3161, 3161,
+ 3161, 3161, 3161, 3161, 3161, 3161, 3225, 3161, 3161, 3225,
+ 3225, 1109, 1238, 1109, 1238, 3161, 3225, 3225, 3225, 3225,
+ 20097, 10498, 10498, 10498, 10498, 10396, 3225, 16256, 16256, 16256,
+ 16256, 36362, 36490, 36618, 36746, 36874, 37002, 37130, 37258, 37386,
+ 37514, 37642, 37770, 37898, 38026, 38154, 38282, 38410, 38538, 38666,
+ 38794, 38922, 39050, 39178, 39306, 39434, 39562, 39690, 39818, 39946,
+ 40074, 40202, 40330, 40458, 40586, 40714, 40842, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 3225,
+ 10396, 10396, 3225, 10396, 10396, 3225, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 3225, 10396, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 3161, 3161, 3161, 3161, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 1109, 1238, 10396, 10396, 10396, 10396, 10396,
+ 10396, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404,
+ 21404, 21404, 21404, 21404, 21404, 21404, 21404, 10396, 10396, 16256,
+ 21404, 48267, 48395, 48523, 48651, 48779, 48907, 49035, 49163, 49291,
+ 49419, 49547, 49675, 49803, 49931, 50059, 30347, 30475, 30603, 43915,
+ 10396, 16256, 16256, 16256, 10396, 10396, 10396, 10396, 10396, 10396,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16256, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 41355, 41483, 41611, 41739, 41867, 41995, 42123,
+ 42251, 11403, 11019, 11147, 35211, 35339, 35467, 35595, 35723, 35851,
+ 40971, 41099, 41227, 41355, 41483, 41611, 41739, 41867, 41995, 42123,
+ 42251, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404,
+ 21404, 21404, 21404, 10396, 10396, 10396, 10396, 21404, 21404, 21404,
+ 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404, 21404,
+ 21404, 21404, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256,
+ 16256, 16256, 16256, 16256, 25995, 26123, 26251, 26379, 45707, 45835,
+ 45963, 46091, 46219, 26763, 21404, 21404, 21404, 21404, 21404, 21404,
+ 42396, 42396, 42396, 42396, 42396, 42396, 42396, 42396, 42396, 42396,
+ 42396, 42396, 42396, 42396, 42396, 42396, 42524, 42524, 42524, 42524,
+ 42524, 42524, 42524, 42524, 42524, 42524, 42524, 42524, 42524, 42524,
+ 42524, 42524, 35083, 42635, 42763, 42891, 43019, 43147, 22036, 18052,
+ 18052, 18052, 18052, 18052, 10396, 10396, 45322, 45450, 45578, 18052,
+ 15109, 664, 10396, 10396, 10396, 16256, 16256, 16256, 10396, 16256,
+ 10396, 10396, 10396, 10396, 10396, 10396, 10396, 16256, 3225, 3225,
+ 3161, 3161, 3161, 3161, 1109, 1238, 1109, 1238, 1109, 1238,
+ 16256, 16256, 16256, 16256, 524, 664, 664, 664, 10396, 18052,
+ 15109, 44042, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238,
+ 10396, 10396, 1109, 1238, 1109, 1238, 1109, 1238, 1109, 1238,
+ 22036, 27541, 27670, 27670, 10396, 46347, 46475, 46603, 46731, 46859,
+ 46987, 47115, 47243, 47371, 47499, 47627, 47755, 47883, 48011, 48139,
+ 50195, 50195, 50195, 50195, 50195, 50195, 50195, 50195, 50195, 50195,
+ 50195, 50195, 50195, 50195, 50195, 50195, 50322, 50322, 50322, 50322,
+ 50322, 50322, 50322, 50322, 50322, 50322, 50322, 50322, 50322, 50322,
+ 50322, 50322, 11906, 11906, 11906, 19074, 19074, 11906, 11906, 16256,
+ 16256, 16256, 16256, 16256, 16256, 16256, 16256, 16256, 22277, 22277,
+ 22277, 22277, 22277, 22277, 22277, 22277, 22277, 1305, 22277, 22277,
+ 22277, 22277, 22277, 22277, 22277, 16256, 22277, 22277, 22277, 22277,
+ 22277, 16256, 22277, 16256, 664, 22036, 22036, 6807, 6807, 27541,
+ 27670, 27541, 27670, 27541, 27670, 27541, 27670, 27541, 27670, 27541,
+ 27670, 664, 664, 27541, 27670, 664, 664, 664, 664, 6807,
+ 6807, 6807, 664, 664, 1305, 1556, 3225, 3225, 3225, 16256,
+ 664, 922, 792, 664, 16256, 16256, 16256, 16256, 8834, 8962,
+ 9090, 9218, 9346, 9474, 9602, 9730, 9858, 9986, 10114, 1109,
+ 3225, 1238, 3225, 1109, 922, 922, 3225, 6683, 10396, 922,
+ 922, 16256, 10396, 3225, 3225, 3225, 3225, 10396, 10396, 16256,
+};
+
+static const jchar data1[] = {
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 128, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 128,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 128,
+ 5, 5, 128, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 128, 128, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 6529, 6529, 6529,
+ 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529,
+ 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529,
+ 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6529,
+ 6529, 6529, 6529, 6529, 6529, 6529, 6529, 6658, 6658, 6658,
+ 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658,
+ 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658, 6658,
+ 6658, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 128, 128, 128, 128, 128,
+ 280, 408, 540, 128, 128, 128, 128, 651, 779, 907,
+ 1035, 1163, 1291, 1419, 1547, 1675, 1803, 1931, 2059, 2187,
+ 2315, 2443, 2571, 2699, 2827, 2955, 3083, 3211, 3339, 3467,
+ 3595, 3723, 3851, 3979, 4107, 4235, 4363, 4491, 4619, 4747,
+ 4875, 5003, 5131, 5259, 5387, 5515, 5643, 5771, 5899, 6027,
+ 6155, 6283, 128, 128, 128, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 8200, 8200, 8326, 8326, 8326, 540, 540, 540,
+ 8200, 8200, 8200, 8200, 8200, 8200, 8464, 8464, 8464, 8464,
+ 8464, 8464, 8464, 8464, 8326, 8326, 8326, 8326, 8326, 540,
+ 540, 8326, 8326, 8326, 8326, 8326, 8326, 8326, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 8326, 8326,
+ 8326, 8326, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 128, 128, 128, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
+ 540, 540, 540, 540, 540, 540, 540, 540, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 6410, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 128, 651,
+ 1163, 1803, 2315, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 128, 280, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 128,
+ 128, 6793, 6921, 7049, 7177, 7305, 7433, 7561, 7689, 7817,
+ 7945, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 8069, 8069, 8069, 8069, 8069, 8069, 128,
+ 128, 8069, 128, 8069, 8069, 8069, 8069, 8069, 8069, 8069,
+ 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069,
+ 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069,
+ 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069, 8069,
+ 8069, 8069, 8069, 8069, 8069, 8069, 8069, 128, 8069, 8069,
+ 128, 128, 128, 8069, 128, 128, 8069, 8604, 8604, 8604,
+ 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604,
+ 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604,
+ 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604,
+ 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604,
+ 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604,
+ 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604, 8604,
+ 8604, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 8705, 8985, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8985,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8985, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 128, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 128, 128, 128, 128, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 128, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 128, 8705,
+ 128, 128, 128, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 128, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8705, 128, 8705, 8705, 128, 128, 8705,
+ 128, 128, 8705, 8705, 128, 128, 8705, 8705, 8705, 8705,
+ 128, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8705, 8834,
+ 8834, 8834, 8834, 128, 8834, 128, 8834, 8834, 8834, 8834,
+ 8705, 8705, 128, 8705, 8705, 8705, 8705, 128, 128, 8705,
+ 8705, 8705, 8705, 8705, 8705, 8705, 8705, 128, 8705, 8705,
+ 8705, 8705, 8705, 8705, 8705, 128, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834, 8834,
+ 8834, 8834, 8705, 8705, 128, 8705, 8705, 8705, 8705, 128,
+ 8834, 8834, 8834, 8985, 8834, 8834, 8834, 8834, 8834, 8834,
+ 128, 128, 128, 128, 9097, 9225, 9353, 9481, 9609, 9737,
+ 9865, 9993, 10121, 10249, 9097, 9225, 9353, 9481, 9609, 9737,
+ 9865, 9993, 10121, 10249, 9097, 9225, 9353, 9481, 9609, 9737,
+ 9865, 9993, 10121, 10249, 9097, 9225, 9353, 9481, 9609, 9737,
+ 9865, 9993, 10121, 10249, 9097, 9225, 9353, 9481, 9609, 9737,
+ 9865, 9993, 10121, 10249,
+};
+
+static const jchar data2[] = {
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+ 5, 5, 5, 5, 5, 5, 5, 5, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
+ 128, 128, 128, 128, 128, 128,
+};
+
+static const jchar data14[] = {
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 262, 262,
+ 262, 262, 262, 262, 262, 262, 262, 262, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 144, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
+ 144, 144, 144,
+};
+
+static const int data_length[] = {
+ 3960, 1504, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, -1, -1, };
+static const jchar* data[] = {
+ data0, data1, data2, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, data14, NULL, NULL};
+
+
+/**
+ * This is the attribute table for computing the numeric value of a
+ * character. The value is -1 if Unicode does not define a value, -2
+ * if the value is not a positive integer, otherwise it is the value.
+ */
+static const jshort numValue0[] = {
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1,
+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
+ 34, 35, -1, -1, -1, -1, -1, -1, 2, 3, -1, 1, -1,
+ -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, 0, 1,
+ 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, -1,
+ 16, 10, 100, 1000, -1, -1, -2, -1, -1, 20, 30, 40, 50,
+ 60, 70, 80, 90, 10000, 17, 18, 19, -1, 0, 1, 2, 3,
+ 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 0, 4, 5, 6, 7, 8, 9, -1, -1, -1, 1, 2,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 50, 100, 500,
+ 1000, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
+ 50, 100, 500, 1000, 1000, 5000, 10000, -1, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, -1, -1, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 10, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9, 10, 20, 30, 5, 6, 7, 8, 9, 21, 22,
+ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
+ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
+ 49, 50, -1, -1, -1,
+};
+
+static const jshort numValue1[] = {
+ -1, -1, -1, -1, -1, 1, 2, 3, 4, 5, 6, 7, 8,
+ 9, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300,
+ 400, 500, 600, 700, 800, 900, 1000, 2000, 3000, 4000, 5000, 6000, 7000,
+ 8000, 9000, 10000, 20000, 30000, -3, -4, -5, -6, -7, -8, -1, -1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1,
+ -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6,
+ 7, 8, 9,
+};
+
+static const jshort numValue2[] = {
+ -1, -1,
+};
+
+static const jshort numValue14[] = {
+ -1, -1, -1,
+};
+
+static const int numValue_length[] = {
+ 395, 81, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, };
+static const jshort* numValue[] = {
+ numValue0, numValue1, numValue2, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, numValue14, NULL, NULL};
+
+
+
+/**
+ * This is the attribute table for computing the uppercase representation
+ * of a character. The value is the difference between the character and
+ * its uppercase version.
+ */
+static const jshort upper0[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 743, 0, 0,
+ 0, 0, 0, -32, 121, 0, -1, 0, -232, 0, -300, 0, 0,
+ 0, 0, 0, 0, 0, 97, 0, 0, 0, 130, 0, 0, 0,
+ 0, 0, 56, 0, -1, -2, -79, 0, 0, 0, 0, -210, -206,
+ -205, -202, -203, -207, -209, -211, -213, -214, -218, -217, -219, 0, 0,
+ 0, 84, 0, 0, 0, 0, 0, -38, -37, -31, -64, -63, -62,
+ -57, 0, -47, -54, -86, -80, 7, 0, -96, 0, 0, 0, 0,
+ 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -59, 8, 0, 74, 86, 100,
+ 128, 112, 126, 8, 0, 9, 0, 0, -7205, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -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,
+};
+
+static const jshort upper1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ -40, 0, 0, 0, 0, 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 jshort upper2[] = {
+ 0, 0,
+};
+
+static const jshort upper14[] = {
+ 0, 0, 0,
+};
+
+static const int upper_length[] = {
+ 395, 81, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, };
+static const jshort* upper[] = {
+ upper0, upper1, upper2, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, upper14, NULL, NULL};
+
+
+/**
+ * This is the attribute table for computing the lowercase representation
+ * of a character. The value is the difference between the character and
+ * its lowercase version.
+ */
+static const jshort lower0[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 32, 0, 0, 0, 1, 0, -199, 0, -121, 0, 210, 206,
+ 205, 79, 202, 203, 207, 0, 211, 209, 213, 0, 214, 218, 217,
+ 219, 0, 0, 2, 1, 0, 0, -97, -56, -130, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 38, 37, 64, 63, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, -60, 0, -7, 80, 0, 0,
+ 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0,
+ 0, 0, 0, 0, -8, 0, -74, -9, 0, -86, -100, -112, -128,
+ -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, -7517, -8383, -8262, 16, 16,
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 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,
+};
+
+static const jshort lower1[] = {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,
+ 0, 0, 0, 0, 0, 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 jshort lower2[] = {
+ 0, 0,
+};
+
+static const jshort lower14[] = {
+ 0, 0, 0,
+};
+
+static const int lower_length[] = {
+ 395, 81, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, };
+static const jshort* lower[] = {
+ lower0, lower1, lower2, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, lower14, NULL, NULL};
+
+
+/**
+ * This is the attribute table for computing the directionality class
+ * of a character. At present, the value is in the range 0 - 18 if the
+ * character has a direction, otherwise it is -1.
+ */
+static const jbyte direction0[] = {
+ 9, 11, 10, 12, 12, 13, 5, 5, 13, 13, 5, 7, 5, 4, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 13, 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, 13, 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, 7, 13, 0, 13, 13, 5, 3, 3, 0, 3, 13, 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, -1, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 8, 8, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0,
+ 0, 13, 1, 1, 2, 2, 2, 2, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
+ 2, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 9, 1, 13, 13,
+ 13, 12, 10, 14, 16, 18, 15, 17, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 0, 0, 2,
+};
+
+static const jbyte direction1[] = {
+ 0, -1, 0, 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, 1, 0, 8, 9, 13, 0, 0, 0, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3,
+};
+
+static const jbyte direction2[] = {
+ 0, -1,
+};
+
+static const jbyte direction14[] = {
+ -1, 9, 8,
+};
+
+static const int direction_length[] = {
+ 395, 81, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, };
+static const jbyte* direction[] = {
+ direction0, direction1, direction2, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ NULL, NULL, NULL, NULL, direction14, NULL, NULL};
+
+
+/**
+ * This is the listing of titlecase special cases (all other character
+ * can use <code>upper</code> to determine their titlecase). The listing
+ * is a sequence of character pairs; converting the first character of the
+ * pair to titlecase produces the second character.
+ */
+static const jchar title[] = {
+ 452, 453, 453, 453, 454, 453, 455, 456, 456, 456,
+ 457, 456, 458, 459, 459, 459, 460, 459, 497, 498,
+ 498, 498, 499, 498,
+ };
+/** Length of title. */
+static const int title_length = 24;
+
+#endif /* __JAVA_CHARTABLES_H__ */
diff --git a/libjava/include/java-cpool.h b/libjava/include/java-cpool.h
new file mode 100644
index 000000000..412250230
--- /dev/null
+++ b/libjava/include/java-cpool.h
@@ -0,0 +1,134 @@
+// java-cpool.h - Constant pool parsing header. -*- c++ -*-
+
+/* Copyright (C) 1999, 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JAVA_CPOOL_H__
+#define __JAVA_CPOOL_H__
+
+#include <gcj/javaprims.h>
+
+// we rename these, to avoid polluting the name space
+#define JV_CONSTANT_Undefined (0L)
+#define JV_CONSTANT_Utf8 (1L)
+#define JV_CONSTANT_Unicode (2L)
+#define JV_CONSTANT_Integer (3L)
+#define JV_CONSTANT_Float (4L)
+#define JV_CONSTANT_Long (5L)
+#define JV_CONSTANT_Double (6L)
+#define JV_CONSTANT_Class (7L)
+#define JV_CONSTANT_String (8L)
+#define JV_CONSTANT_Fieldref (9L)
+#define JV_CONSTANT_Methodref (10L)
+#define JV_CONSTANT_InterfaceMethodref (11L)
+#define JV_CONSTANT_NameAndType (12L)
+#define JV_CONSTANT_ResolvedFlag (16L)
+#define JV_CONSTANT_LazyFlag (32L)
+#define JV_CONSTANT_ResolvedString (16L | 8L)
+#define JV_CONSTANT_ResolvedClass (16L | 7L)
+
+extern inline void
+_Jv_storeIndexes (_Jv_word *data,
+ _Jv_ushort index0,
+ _Jv_ushort index1)
+{
+ data->i = (((jint)index0) << 16) | (jint) index1;
+}
+
+extern inline void
+_Jv_loadIndexes (const _Jv_word *data,
+ _Jv_ushort& index0,
+ _Jv_ushort& index1)
+{
+ jint udata = data->i;
+
+ _Jv_uint uindex0 = ((udata >> 16) & 0xffff);
+ _Jv_uint uindex1 = udata & 0xffff;
+
+ index0 = uindex0;
+ index1 = uindex1;
+}
+
+extern inline void
+_Jv_storeFloat (_Jv_word *data, jfloat f)
+{
+ data->f = f;
+}
+
+extern inline jfloat
+_Jv_loadFloat (_Jv_word *data)
+{
+ return data->f;
+}
+
+extern inline void
+_Jv_storeInt (_Jv_word *data, jint i)
+{
+ data->i = i;
+}
+
+extern inline jint
+_Jv_loadInt (_Jv_word *data)
+{
+ return data->i;
+}
+
+extern inline void
+_Jv_storeLong (_Jv_word *data, jlong l)
+{
+#if SIZEOF_VOID_P == 8
+ data[0].l = l;
+#else
+ _Jv_word2 tmp;
+ tmp.l = l;
+ data[0].ia[0] = tmp.ia[0];
+ data[1].ia[0] = tmp.ia[1];
+#endif
+}
+
+extern inline jlong
+_Jv_loadLong (_Jv_word *data)
+{
+#if SIZEOF_VOID_P == 8
+ return data -> l;
+#else
+ _Jv_word2 tmp;
+ tmp.ia[0] = data[0].ia[0];
+ tmp.ia[1] = data[1].ia[0];
+ return tmp.l;
+#endif
+}
+
+extern inline void
+_Jv_storeDouble (_Jv_word *data, jdouble d)
+{
+#if SIZEOF_VOID_P == 8
+ data[0].d = d;
+#else
+ _Jv_word2 tmp;
+ tmp.d = d;
+ data[0].ia[0] = tmp.ia[0];
+ data[1].ia[0] = tmp.ia[1];
+#endif
+}
+
+extern inline jdouble
+_Jv_loadDouble (_Jv_word *data)
+{
+#if SIZEOF_VOID_P == 8
+ return data -> d;
+#else
+ _Jv_word2 tmp;
+ tmp.ia[0] = data[0].ia[0];
+ tmp.ia[1] = data[1].ia[0];
+ return tmp.d;
+#endif
+}
+
+
+#endif /* __JAVA_CPOOL_H__ */
diff --git a/libjava/include/java-insns.h b/libjava/include/java-insns.h
new file mode 100644
index 000000000..824e44186
--- /dev/null
+++ b/libjava/include/java-insns.h
@@ -0,0 +1,248 @@
+// java-insns.h - Instruction encodings. This is -*- c++ -*-
+
+/* Copyright (C) 1999, 2001, 2002, 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JAVA_INSNS_H__
+#define __JAVA_INSNS_H__
+
+enum java_opcode
+{
+ op_nop = 0x00,
+ op_aconst_null = 0x01,
+ op_iconst_m1 = 0x02,
+ op_iconst_0 = 0x03,
+ op_iconst_1 = 0x04,
+ op_iconst_2 = 0x05,
+ op_iconst_3 = 0x06,
+ op_iconst_4 = 0x07,
+ op_iconst_5 = 0x08,
+ op_lconst_0 = 0x09,
+ op_lconst_1 = 0x0a,
+ op_fconst_0 = 0x0b,
+ op_fconst_1 = 0x0c,
+ op_fconst_2 = 0x0d,
+ op_dconst_0 = 0x0e,
+ op_dconst_1 = 0x0f,
+ op_bipush = 0x10,
+ op_sipush = 0x11,
+ op_ldc = 0x12,
+ op_ldc_w = 0x13,
+ op_ldc2_w = 0x14,
+ op_iload = 0x15,
+ op_lload = 0x16,
+ op_fload = 0x17,
+ op_dload = 0x18,
+ op_aload = 0x19,
+ op_iload_0 = 0x1a,
+ op_iload_1 = 0x1b,
+ op_iload_2 = 0x1c,
+ op_iload_3 = 0x1d,
+ op_lload_0 = 0x1e,
+ op_lload_1 = 0x1f,
+ op_lload_2 = 0x20,
+ op_lload_3 = 0x21,
+ op_fload_0 = 0x22,
+ op_fload_1 = 0x23,
+ op_fload_2 = 0x24,
+ op_fload_3 = 0x25,
+ op_dload_0 = 0x26,
+ op_dload_1 = 0x27,
+ op_dload_2 = 0x28,
+ op_dload_3 = 0x29,
+ op_aload_0 = 0x2a,
+ op_aload_1 = 0x2b,
+ op_aload_2 = 0x2c,
+ op_aload_3 = 0x2d,
+ op_iaload = 0x2e,
+ op_laload = 0x2f,
+ op_faload = 0x30,
+ op_daload = 0x31,
+ op_aaload = 0x32,
+ op_baload = 0x33,
+ op_caload = 0x34,
+ op_saload = 0x35,
+ op_istore = 0x36,
+ op_lstore = 0x37,
+ op_fstore = 0x38,
+ op_dstore = 0x39,
+ op_astore = 0x3a,
+ op_istore_0 = 0x3b,
+ op_istore_1 = 0x3c,
+ op_istore_2 = 0x3d,
+ op_istore_3 = 0x3e,
+ op_lstore_0 = 0x3f,
+ op_lstore_1 = 0x40,
+ op_lstore_2 = 0x41,
+ op_lstore_3 = 0x42,
+ op_fstore_0 = 0x43,
+ op_fstore_1 = 0x44,
+ op_fstore_2 = 0x45,
+ op_fstore_3 = 0x46,
+ op_dstore_0 = 0x47,
+ op_dstore_1 = 0x48,
+ op_dstore_2 = 0x49,
+ op_dstore_3 = 0x4a,
+ op_astore_0 = 0x4b,
+ op_astore_1 = 0x4c,
+ op_astore_2 = 0x4d,
+ op_astore_3 = 0x4e,
+ op_iastore = 0x4f,
+ op_lastore = 0x50,
+ op_fastore = 0x51,
+ op_dastore = 0x52,
+ op_aastore = 0x53,
+ op_bastore = 0x54,
+ op_castore = 0x55,
+ op_sastore = 0x56,
+ op_pop = 0x57,
+ op_pop2 = 0x58,
+ op_dup = 0x59,
+ op_dup_x1 = 0x5a,
+ op_dup_x2 = 0x5b,
+ op_dup2 = 0x5c,
+ op_dup2_x1 = 0x5d,
+ op_dup2_x2 = 0x5e,
+ op_swap = 0x5f,
+ op_iadd = 0x60,
+ op_ladd = 0x61,
+ op_fadd = 0x62,
+ op_dadd = 0x63,
+ op_isub = 0x64,
+ op_lsub = 0x65,
+ op_fsub = 0x66,
+ op_dsub = 0x67,
+ op_imul = 0x68,
+ op_lmul = 0x69,
+ op_fmul = 0x6a,
+ op_dmul = 0x6b,
+ op_idiv = 0x6c,
+ op_ldiv = 0x6d,
+ op_fdiv = 0x6e,
+ op_ddiv = 0x6f,
+ op_irem = 0x70,
+ op_lrem = 0x71,
+ op_frem = 0x72,
+ op_drem = 0x73,
+ op_ineg = 0x74,
+ op_lneg = 0x75,
+ op_fneg = 0x76,
+ op_dneg = 0x77,
+ op_ishl = 0x78,
+ op_lshl = 0x79,
+ op_ishr = 0x7a,
+ op_lshr = 0x7b,
+ op_iushr = 0x7c,
+ op_lushr = 0x7d,
+ op_iand = 0x7e,
+ op_land = 0x7f,
+ op_ior = 0x80,
+ op_lor = 0x81,
+ op_ixor = 0x82,
+ op_lxor = 0x83,
+ op_iinc = 0x84,
+ op_i2l = 0x85,
+ op_i2f = 0x86,
+ op_i2d = 0x87,
+ op_l2i = 0x88,
+ op_l2f = 0x89,
+ op_l2d = 0x8a,
+ op_f2i = 0x8b,
+ op_f2l = 0x8c,
+ op_f2d = 0x8d,
+ op_d2i = 0x8e,
+ op_d2l = 0x8f,
+ op_d2f = 0x90,
+ op_i2b = 0x91,
+ op_i2c = 0x92,
+ op_i2s = 0x93,
+ op_lcmp = 0x94,
+ op_fcmpl = 0x95,
+ op_fcmpg = 0x96,
+ op_dcmpl = 0x97,
+ op_dcmpg = 0x98,
+ op_ifeq = 0x99,
+ op_ifne = 0x9a,
+ op_iflt = 0x9b,
+ op_ifge = 0x9c,
+ op_ifgt = 0x9d,
+ op_ifle = 0x9e,
+ op_if_icmpeq = 0x9f,
+ op_if_icmpne = 0xa0,
+ op_if_icmplt = 0xa1,
+ op_if_icmpge = 0xa2,
+ op_if_icmpgt = 0xa3,
+ op_if_icmple = 0xa4,
+ op_if_acmpeq = 0xa5,
+ op_if_acmpne = 0xa6,
+ op_goto = 0xa7,
+ op_jsr = 0xa8,
+ op_ret = 0xa9,
+ op_tableswitch = 0xaa,
+ op_lookupswitch = 0xab,
+ op_ireturn = 0xac,
+ op_lreturn = 0xad,
+ op_freturn = 0xae,
+ op_dreturn = 0xaf,
+ op_areturn = 0xb0,
+ op_return = 0xb1,
+ op_getstatic = 0xb2,
+ op_putstatic = 0xb3,
+ op_getfield = 0xb4,
+ op_putfield = 0xb5,
+ op_invokevirtual = 0xb6,
+ op_invokespecial = 0xb7,
+ op_invokestatic = 0xb8,
+ op_invokeinterface = 0xb9,
+ op_breakpoint = 0xba,
+ op_new = 0xbb,
+ op_newarray = 0xbc,
+ op_anewarray = 0xbd,
+ op_arraylength = 0xbe,
+ op_athrow = 0xbf,
+ op_checkcast = 0xc0,
+ op_instanceof = 0xc1,
+ op_monitorenter = 0xc2,
+ op_monitorexit = 0xc3,
+ op_wide = 0xc4,
+ op_multianewarray = 0xc5,
+ op_ifnull = 0xc6,
+ op_ifnonnull = 0xc7,
+ op_goto_w = 0xc8,
+ op_jsr_w = 0xc9,
+
+ // new opcodes
+
+ op_putfield_1 = 0xca,
+ op_putfield_2 = 0xcb,
+ op_putfield_4 = 0xcc,
+ op_putfield_8 = 0xcd,
+ op_putfield_a = 0xce,
+
+ op_putstatic_1 = 0xcf,
+ op_putstatic_2 = 0xd0,
+ op_putstatic_4 = 0xd1,
+ op_putstatic_8 = 0xd2,
+ op_putstatic_a = 0xd3,
+
+ op_getfield_1 = 0xd4,
+ op_getfield_2s = 0xd5,
+ op_getfield_2u = 0xd6,
+ op_getfield_4 = 0xd7,
+ op_getfield_8 = 0xd8,
+ op_getfield_a = 0xd9,
+
+ op_getstatic_1 = 0xda,
+ op_getstatic_2s = 0xdb,
+ op_getstatic_2u = 0xdc,
+ op_getstatic_4 = 0xdd,
+ op_getstatic_8 = 0xde,
+ op_getstatic_a = 0xdf
+};
+
+#endif /* __JAVA_INSNS_H__ */
diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h
new file mode 100644
index 000000000..c088e9f01
--- /dev/null
+++ b/libjava/include/java-interp.h
@@ -0,0 +1,588 @@
+// java-interp.h - Header file for the bytecode interpreter. -*- c++ -*-
+
+/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JAVA_INTERP_H__
+#define __JAVA_INTERP_H__
+
+#include <jvm.h>
+#include <java-cpool.h>
+#include <gnu/gcj/runtime/NameFinder.h>
+
+enum _Jv_FrameType
+{
+ frame_native,
+ frame_interpreter,
+ frame_proxy
+};
+
+#ifdef INTERPRETER
+
+#pragma interface
+
+#include <java/lang/Class.h>
+#include <java/lang/ClassLoader.h>
+#include <java/lang/reflect/Modifier.h>
+#include <java/lang/Thread.h>
+#include <gnu/gcj/RawData.h>
+
+// Define this to get the direct-threaded interpreter. If undefined,
+// we revert to a basic bytecode interpreter. The former is faster
+// but uses more memory.
+#define DIRECT_THREADED
+
+#include <ffi.h>
+
+struct _Jv_ResolvedMethod;
+
+void _Jv_InitInterpreter ();
+void _Jv_DefineClass (jclass, jbyteArray, jint, jint,
+ java::security::ProtectionDomain *,
+ _Jv_Utf8Const **);
+
+void _Jv_InitField (jobject, jclass, int);
+void * _Jv_AllocMethodInvocation (jsize size);
+int _Jv_count_arguments (_Jv_Utf8Const *signature,
+ jboolean staticp = true);
+void _Jv_VerifyMethod (_Jv_InterpMethod *method);
+void _Jv_CompileMethod (_Jv_InterpMethod* method);
+int _Jv_init_cif (_Jv_Utf8Const* signature,
+ int arg_count,
+ jboolean staticp,
+ ffi_cif *cif,
+ ffi_type **arg_types,
+ ffi_type **rtype_p);
+
+/* the interpreter is written in C++, primarily because it makes it easy for
+ * the entire thing to be "friend" with class Class. */
+
+class _Jv_InterpClass;
+class _Jv_InterpMethod;
+
+// Before a method is "compiled" we store values as the bytecode PC,
+// an int. Afterwards we store them as pointers into the prepared
+// code itself.
+union _Jv_InterpPC
+{
+ int i;
+ void *p;
+};
+
+class _Jv_InterpException
+{
+ _Jv_InterpPC start_pc;
+ _Jv_InterpPC end_pc;
+ _Jv_InterpPC handler_pc;
+ _Jv_InterpPC handler_type;
+
+ friend class _Jv_ClassReader;
+ friend class _Jv_InterpMethod;
+ friend class _Jv_BytecodeVerifier;
+};
+
+// Base class for method representations. Subclasses are interpreted
+// and JNI methods.
+class _Jv_MethodBase
+{
+protected:
+ // The class which defined this method.
+ jclass defining_class;
+
+ // The method description.
+ _Jv_Method *self;
+
+ // Size of raw arguments.
+ _Jv_ushort args_raw_size;
+
+ friend class _Jv_InterpreterEngine;
+
+public:
+ _Jv_Method *get_method ()
+ {
+ return self;
+ }
+};
+
+// The type of the PC depends on whether we're doing direct threading
+// or a more ordinary bytecode interpreter.
+#ifdef DIRECT_THREADED
+// Slot in the "compiled" form of the bytecode.
+union insn_slot
+{
+ // Address of code.
+ void *insn;
+ // An integer value used by an instruction.
+ jint int_val;
+ // A pointer value used by an instruction.
+ void *datum;
+};
+
+typedef insn_slot *pc_t;
+#else
+typedef unsigned char *pc_t;
+#endif
+
+
+// This structure holds the bytecode pc and corresponding source code
+// line number. An array (plus length field) of this structure is put
+// in each _Jv_InterpMethod and used to resolve the (internal) program
+// counter of the interpreted method to an actual java source file
+// line.
+struct _Jv_LineTableEntry
+{
+ union
+ {
+ pc_t pc;
+ int bytecode_pc;
+ };
+ int line;
+};
+
+// This structure holds local variable information.
+// Like _Jv_LineTableEntry above, it is remapped when the method is
+// compiled for direct threading.
+struct _Jv_LocalVarTableEntry
+{
+ // First PC value at which variable is live
+ union
+ {
+ pc_t pc;
+ int bytecode_pc;
+ };
+
+ // length of visibility of variable
+ int length;
+
+ // variable name
+ char *name;
+
+ // type description
+ char *descriptor;
+
+ // stack slot number (long and double occupy slot and slot + 1)
+ int slot;
+};
+
+class _Jv_InterpMethod : public _Jv_MethodBase
+{
+ // Breakpoint instruction
+ static pc_t breakpoint_insn;
+#ifdef DIRECT_THREADED
+ static insn_slot bp_insn_slot;
+
+public:
+ // Mutex to prevent a data race between threads when rewriting
+ // instructions. See interpret-run.cc for an explanation of its use.
+ static _Jv_Mutex_t rewrite_insn_mutex;
+
+ // The count of threads executing this method.
+ long thread_count;
+
+private:
+
+#else
+ static unsigned char bp_insn_opcode;
+#endif
+
+ _Jv_ushort max_stack;
+ _Jv_ushort max_locals;
+ int code_length;
+
+ _Jv_ushort exc_count;
+ bool is_15;
+
+ // Length of the line_table - when this is zero then line_table is NULL.
+ int line_table_len;
+ _Jv_LineTableEntry *line_table;
+
+ // The local variable table length and the table itself
+ int local_var_table_len;
+ _Jv_LocalVarTableEntry *local_var_table;
+
+ pc_t prepared;
+ int number_insn_slots;
+
+ unsigned char* bytecode ()
+ {
+ return
+ ((unsigned char*)this)
+ + ROUND((sizeof (_Jv_InterpMethod)
+ + exc_count*sizeof (_Jv_InterpException)), 4);
+ }
+
+ _Jv_InterpException * exceptions ()
+ {
+ return (_Jv_InterpException*) (this+1);
+ }
+
+ static size_t size (int exc_count, int code_length)
+ {
+ return
+ ROUND ((sizeof (_Jv_InterpMethod)
+ + (exc_count * sizeof (_Jv_InterpException))), 4)
+ + code_length;
+ }
+
+ // return the method's invocation pointer (a stub).
+ void *ncode (jclass);
+ void compile (const void * const *);
+
+#if FFI_NATIVE_RAW_API
+# define INTERP_FFI_RAW_TYPE ffi_raw
+#else
+# define INTERP_FFI_RAW_TYPE ffi_java_raw
+#endif
+
+ static void run_normal (ffi_cif*, void*, INTERP_FFI_RAW_TYPE*, void*);
+ static void run_synch_object (ffi_cif*, void*, INTERP_FFI_RAW_TYPE*, void*);
+ static void run_class (ffi_cif*, void*, INTERP_FFI_RAW_TYPE*, void*);
+ static void run_synch_class (ffi_cif*, void*, INTERP_FFI_RAW_TYPE*, void*);
+
+ static void run_normal_debug (ffi_cif*, void*, INTERP_FFI_RAW_TYPE*, void*);
+ static void run_synch_object_debug (ffi_cif*, void*, INTERP_FFI_RAW_TYPE*,
+ void*);
+ static void run_class_debug (ffi_cif*, void*, INTERP_FFI_RAW_TYPE*, void*);
+ static void run_synch_class_debug (ffi_cif*, void*, INTERP_FFI_RAW_TYPE*,
+ void*);
+
+ static void run (void *, INTERP_FFI_RAW_TYPE *, _Jv_InterpMethod *);
+ static void run_debug (void *, INTERP_FFI_RAW_TYPE *, _Jv_InterpMethod *);
+
+
+
+ // Returns source file line number for given PC value, or -1 if line
+ // number info is unavailable.
+ int get_source_line(pc_t mpc);
+
+ public:
+
+ // Convenience function for indexing bytecode PC/insn slots in
+ // line tables for JDWP
+ jlong insn_index (pc_t pc);
+
+ // Helper function used to check if there is a handler for an exception
+ // present at this code index
+ jboolean check_handler (pc_t *pc, _Jv_InterpMethod *meth,
+ java::lang::Throwable *ex);
+
+ /* Get the line table for this method.
+ * start is the lowest index in the method
+ * end is the highest index in the method
+ * line_numbers is an array to hold the list of source line numbers
+ * code_indices is an array to hold the corresponding list of code indices
+ */
+ void get_line_table (jlong& start, jlong& end, jintArray& line_numbers,
+ jlongArray& code_indices);
+
+ int get_max_locals ()
+ {
+ return static_cast<int> (max_locals);
+ }
+
+ /* Get info for a local variable of this method.
+ * If there is no loca_var_table for this method it will return -1.
+ * table_slot indicates which slot in the local_var_table to get, if there is
+ * no variable at this location it will return 0.
+ * Otherwise, it will return the number of table slots after the selected
+ * slot, indexed from 0.
+ *
+ * Example: there are 5 slots in the table, you request slot 0 so it will
+ * return 4.
+ */
+ int get_local_var_table (char **name, char **sig, char **generic_sig,
+ jlong *startloc, jint *length, jint *slot,
+ int table_slot);
+
+ /* Installs a break instruction at the given code index. Returns
+ the pc_t of the breakpoint or NULL if index is invalid. */
+ pc_t install_break (jlong index);
+
+ // Gets the instruction at the given index
+ pc_t get_insn (jlong index);
+
+ /* Writes the given instruction at the given code index. Returns
+ the insn or NULL if index is invalid. */
+ pc_t set_insn (jlong index, pc_t insn);
+
+ // Is the given location in this method a breakpoint?
+ bool breakpoint_at (jlong index);
+
+#ifdef DIRECT_THREADED
+ friend void _Jv_CompileMethod (_Jv_InterpMethod*);
+#endif
+
+ friend class _Jv_ClassReader;
+ friend class _Jv_BytecodeVerifier;
+ friend class _Jv_StackTrace;
+ friend class _Jv_InterpreterEngine;
+
+#ifdef JV_MARKOBJ_DECL
+ friend JV_MARKOBJ_DECL;
+#endif
+};
+
+class _Jv_InterpClass
+{
+ _Jv_MethodBase **interpreted_methods;
+ _Jv_ushort *field_initializers;
+ jstring source_file_name;
+ _Jv_ClosureList **closures;
+
+ friend class _Jv_ClassReader;
+ friend class _Jv_InterpMethod;
+ friend class _Jv_StackTrace;
+ friend class _Jv_InterpreterEngine;
+
+ friend void _Jv_InitField (jobject, jclass, int);
+#ifdef JV_MARKOBJ_DECL
+ friend JV_MARKOBJ_DECL;
+#endif
+
+ friend _Jv_MethodBase ** _Jv_GetFirstMethod (_Jv_InterpClass *klass);
+ friend jstring _Jv_GetInterpClassSourceFile (jclass);
+};
+
+extern inline _Jv_MethodBase **
+_Jv_GetFirstMethod (_Jv_InterpClass *klass)
+{
+ return klass->interpreted_methods;
+}
+
+struct _Jv_ResolvedMethod
+{
+ jint stack_item_count;
+ jclass klass;
+ _Jv_Method* method;
+
+ // a resolved method holds the cif in-line, so that _Jv_MarkObj just needs
+ // to mark the resolved method to hold on to the cif. Some memory could be
+ // saved by keeping a cache of cif's, since many will be the same.
+ ffi_cif cif;
+ ffi_type * arg_types[0];
+};
+
+class _Jv_JNIMethod : public _Jv_MethodBase
+{
+ // The underlying function. If NULL we have to look for the
+ // function.
+ void *function;
+
+ // This is the CIF used by the JNI function.
+ ffi_cif jni_cif;
+
+ // These are the argument types used by the JNI function.
+ ffi_type **jni_arg_types;
+
+ // This function is used when making a JNI call from the interpreter.
+ static void call (ffi_cif *, void *, INTERP_FFI_RAW_TYPE *, void *);
+
+ void *ncode (jclass);
+
+ friend class _Jv_ClassReader;
+ friend class _Jv_InterpreterEngine;
+
+#ifdef JV_MARKOBJ_DECL
+ friend JV_MARKOBJ_DECL;
+#endif
+
+public:
+ // FIXME: this is ugly.
+ void set_function (void *f)
+ {
+ function = f;
+ }
+};
+
+// The composite call stack as represented by a linked list of frames
+class _Jv_Frame
+{
+public:
+ java::lang::Thread *thread;
+
+ union
+ {
+ _Jv_MethodBase *self;
+ void *meth;
+ _Jv_Method *proxyMethod;
+ };
+
+ //The full list of frames, JNI and interpreted
+ _Jv_Frame *next;
+ _Jv_FrameType frame_type;
+
+ _Jv_Frame (_Jv_MethodBase *s, java::lang::Thread *thr, _Jv_FrameType type)
+ {
+ self = s;
+ frame_type = type;
+ next = (_Jv_Frame *) thr->frame;
+ thr->frame = (gnu::gcj::RawData *) this;
+ thread = thr;
+ }
+
+ ~_Jv_Frame ()
+ {
+ thread->frame = (gnu::gcj::RawData *) next;
+ }
+
+ int depth ()
+ {
+ int depth = 0;
+ struct _Jv_Frame *f;
+ for (f = this; f != NULL; f = f->next)
+ ++depth;
+
+ return depth;
+ }
+};
+
+// An interpreted frame in the call stack
+class _Jv_InterpFrame : public _Jv_Frame
+{
+public:
+
+ // Keep the purely interpreted list around so as not to break backtraces
+ _Jv_InterpFrame *next_interp;
+
+ union
+ {
+ pc_t pc;
+ jclass proxyClass;
+ };
+
+ // Pointer to the actual pc value.
+ pc_t *pc_ptr;
+
+ //Debug info for local variables.
+ _Jv_word *locals;
+ char *locals_type;
+
+ // Object pointer for this frame ("this")
+ jobject obj_ptr;
+
+ _Jv_InterpFrame (void *meth, java::lang::Thread *thr, jclass proxyCls = NULL,
+ pc_t *pc = NULL,
+ _Jv_FrameType frame_type = frame_interpreter)
+ : _Jv_Frame (reinterpret_cast<_Jv_MethodBase *> (meth), thr,
+ frame_type)
+ {
+ next_interp = (_Jv_InterpFrame *) thr->interp_frame;
+ proxyClass = proxyCls;
+ thr->interp_frame = (gnu::gcj::RawData *) this;
+ obj_ptr = NULL;
+ pc_ptr = pc;
+ }
+
+ ~_Jv_InterpFrame ()
+ {
+ thread->interp_frame = (gnu::gcj::RawData *) next_interp;
+ }
+
+ jobject get_this_ptr ()
+ {
+ return obj_ptr;
+ }
+
+ pc_t get_pc ()
+ {
+ pc_t pc;
+
+ // If the PC_PTR is NULL, we are not debugging.
+ if (pc_ptr == NULL)
+ pc = 0;
+ else
+ pc = *pc_ptr - 1;
+
+ return pc;
+ }
+};
+
+// A native frame in the call stack really just a placeholder
+class _Jv_NativeFrame : public _Jv_Frame
+{
+public:
+
+ _Jv_NativeFrame (_Jv_JNIMethod *s, java::lang::Thread *thr)
+ : _Jv_Frame (s, thr, frame_native)
+ {
+ }
+};
+
+#ifdef DIRECT_THREADED
+// This class increments and decrements the thread_count field in an
+// interpreted method. On entry to the interpreter a
+// ThreadCountAdjuster is created when increments the thread_count in
+// the current method and uses the next_interp field in the frame to
+// find the previous method and decrement its thread_count.
+class ThreadCountAdjuster
+{
+
+ // A class used to handle the rewrite_insn_mutex while we're
+ // adjusting the thread_count in a method. Unlocking the mutex in a
+ // destructor ensures that it's unlocked even if (for example) a
+ // segfault occurs in the critical section.
+ class MutexLock
+ {
+ private:
+ _Jv_Mutex_t *mutex;
+ public:
+ MutexLock (_Jv_Mutex_t *m)
+ {
+ mutex = m;
+ _Jv_MutexLock (mutex);
+ }
+ ~MutexLock ()
+ {
+ _Jv_MutexUnlock (mutex);
+ }
+ };
+
+ _Jv_InterpMethod *method;
+ _Jv_InterpMethod *next_method;
+
+public:
+
+ ThreadCountAdjuster (_Jv_InterpMethod *m, _Jv_InterpFrame *fr)
+ {
+ MutexLock lock (&::_Jv_InterpMethod::rewrite_insn_mutex);
+
+ method = m;
+ next_method = NULL;
+
+ _Jv_InterpFrame *next_interp = fr->next_interp;
+
+ // Record the fact that we're executing this method and that
+ // we're no longer executing the method that called us.
+ method->thread_count++;
+
+ if (next_interp && next_interp->frame_type == frame_interpreter)
+ {
+ next_method
+ = reinterpret_cast<_Jv_InterpMethod *> (next_interp->meth);
+ next_method->thread_count--;
+ }
+ }
+
+ ~ThreadCountAdjuster ()
+ {
+ MutexLock lock (&::_Jv_InterpMethod::rewrite_insn_mutex);
+
+ // We're going to return to the method that called us, so bump its
+ // thread_count and decrement our own.
+
+ method->thread_count--;
+
+ if (next_method)
+ next_method->thread_count++;
+ }
+};
+#endif // DIRECT_THREADED
+
+#endif /* INTERPRETER */
+
+#endif /* __JAVA_INTERP_H__ */
diff --git a/libjava/include/java-props.h b/libjava/include/java-props.h
new file mode 100644
index 000000000..f552e1b54
--- /dev/null
+++ b/libjava/include/java-props.h
@@ -0,0 +1,33 @@
+// java-props.h - Properties -*- c++ -*-
+
+/* Copyright (C) 1999 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JAVA_PROPS_H__
+#define __JAVA_PROPS_H__
+
+typedef struct
+{
+ char *key;
+ size_t key_length;
+ char *value;
+ size_t value_length;
+} property_pair;
+
+// Set to NULL-terminated list of properties set at compile time.
+extern const char **_Jv_Compiler_Properties;
+extern int _Jv_Properties_Count;
+
+// Properties taken from the user's environment.
+extern property_pair *_Jv_Environment_Properties;
+
+// Module load path.
+extern char *_Jv_Module_Load_Path;
+
+#endif
+
diff --git a/libjava/include/java-stack.h b/libjava/include/java-stack.h
new file mode 100644
index 000000000..40ce825b0
--- /dev/null
+++ b/libjava/include/java-stack.h
@@ -0,0 +1,177 @@
+// java-stack.h - Definitions for unwinding & inspecting the call stack.
+
+/* Copyright (C) 2005, 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JV_STACKTRACE_H__
+#define __JV_STACKTRACE_H__
+
+#include <stdlib.h>
+#include <unwind.h>
+
+#include <gcj/cni.h>
+#include <gcj/javaprims.h>
+
+#include <java-interp.h>
+
+#include <java/lang/Class.h>
+#include <java/lang/StackTraceElement.h>
+#include <java/lang/Throwable.h>
+#include <java/lang/Thread.h>
+#include <java/util/IdentityHashMap.h>
+
+#include <gnu/gcj/runtime/NameFinder.h>
+
+using namespace gnu::gcj::runtime;
+using namespace java::lang;
+
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ class VMStackWalker;
+ }
+ }
+}
+
+#ifdef INTERPRETER
+struct _Jv_InterpFrameInfo
+{
+ _Jv_InterpMethod *meth;
+ pc_t pc;
+};
+#endif
+
+struct _Jv_StackFrame
+{
+ _Jv_FrameType type; /* Native or interpreted. */
+ union {
+#ifdef INTERPRETER
+ _Jv_InterpFrameInfo interp;
+#endif
+ struct {
+ jclass proxyClass;
+ _Jv_Method *proxyMethod;
+ };
+ struct {
+ void *ip;
+ void *start_ip;
+ };
+ };
+ jclass klass;
+ _Jv_Method *meth;
+};
+
+struct _Jv_UnwindState;
+typedef _Unwind_Reason_Code (*_Jv_TraceFn) (_Jv_UnwindState *);
+
+struct _Jv_UnwindState
+{
+ jint length; // length of FRAMES
+ jint pos; // current position in FRAMES
+ _Jv_StackFrame *frames; // array of stack frame data to be filled.
+#ifdef INTERPRETER
+ _Jv_InterpFrame *interp_frame; // current frame in the interpreter stack.
+#endif
+ _Jv_TraceFn trace_function; // function to call back after each frame
+ // is enumerated. May be NULL.
+ void *trace_data; // additional state data for trace_function.
+
+ _Jv_UnwindState (jint ln)
+ {
+ length = ln;
+ pos = 0;
+ frames = NULL;
+#ifdef INTERPRETER
+ Thread *thread = Thread::currentThread();
+ // Check for NULL currentThread(), in case an exception is created
+ // very early during the runtime startup.
+ if (thread)
+ interp_frame = (_Jv_InterpFrame *) thread->interp_frame;
+ else
+ interp_frame = NULL;
+#endif
+ trace_function = NULL;
+ trace_data = NULL;
+ }
+};
+
+class _Jv_StackTrace
+{
+private:
+ int length;
+ _Jv_StackFrame frames[];
+
+ static java::util::IdentityHashMap *ncodeMap;
+ static void UpdateNCodeMap ();
+ static jclass ClassForFrame (_Jv_StackFrame *frame);
+ static void FillInFrameInfo (_Jv_StackFrame *frame);
+ static void getLineNumberForFrame(_Jv_StackFrame *frame, NameFinder *finder,
+ jstring *sourceFileName, jint *lineNum,
+ jstring *methodName);
+
+ static _Unwind_Reason_Code UnwindTraceFn (struct _Unwind_Context *context,
+ void *state_ptr);
+
+ static _Unwind_Reason_Code calling_class_trace_fn (_Jv_UnwindState *state);
+ static _Unwind_Reason_Code non_system_trace_fn (_Jv_UnwindState *state);
+ static _Unwind_Reason_Code accesscontrol_trace_fn (_Jv_UnwindState *state);
+ static _Unwind_Reason_Code stackwalker_trace_fn (_Jv_UnwindState *state);
+ static _Unwind_Reason_Code stackwalker_nnl_trace_fn (_Jv_UnwindState *state);
+
+public:
+ static _Jv_StackTrace *GetStackTrace (void);
+ static JArray< ::java::lang::StackTraceElement *>*
+ GetStackTraceElements (_Jv_StackTrace *trace,
+ java::lang::Throwable *throwable);
+ static jclass GetCallingClass (jclass);
+ static void GetCallerInfo (jclass checkClass, jclass *, _Jv_Method **);
+ static ClassLoader *GetFirstNonSystemClassLoader (void);
+ static jobjectArray GetAccessControlStack ();
+ static JArray<jclass> *GetStackWalkerStack ();
+ static jclass GetStackWalkerCallingClass ();
+ static ClassLoader *GetStackWalkerFirstNonNullLoader ();
+
+ friend jclass _Jv_GetMethodDeclaringClass (jmethodID);
+ friend class gnu::classpath::VMStackWalker;
+};
+
+// Information about a given address.
+struct _Jv_AddrInfo
+{
+ // File name of the defining module.
+ const char *file_name;
+
+ // Base address of the loaded module.
+ void *base;
+
+ // Name of the nearest symbol.
+ const char *sym_name;
+
+ // Address of the nearest symbol.
+ void *sym_addr;
+
+ ~_Jv_AddrInfo (void)
+ {
+ // On systems with a real dladdr(), the file and symbol names given by
+ // _Jv_platform_dladdr() are not dynamically allocated. On Windows,
+ // they are.
+
+#ifdef WIN32
+ if (file_name)
+ free ((void *)file_name);
+
+ if (sym_name)
+ free ((void *)sym_name);
+#endif /* WIN32 */
+ }
+};
+
+#endif /* __JV_STACKTRACE_H__ */
diff --git a/libjava/include/jni_md.h b/libjava/include/jni_md.h
new file mode 100644
index 000000000..d75efc6f2
--- /dev/null
+++ b/libjava/include/jni_md.h
@@ -0,0 +1,151 @@
+/* jni_md.h
+ Copyright (C) 2001, 2005, 2007, 2010 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+#ifndef __GCJ_JNI_MD_H__
+#define __GCJ_JNI_MD_H__
+
+#include <gcj/libgcj-config.h>
+
+#ifdef __GCJ_JNI_IMPL__
+
+/* If __GCJ_JNI_IMPL__ is defined, then we assume that we're building
+ libgcj itself, and we include headers which taint the namespace
+ more than is acceptable for the ordinary JNI user. */
+#include <gcj/javaprims.h>
+#include <gcj/array.h>
+#include <gnu/gcj/runtime/JNIWeakRef.h>
+
+typedef gnu::gcj::runtime::JNIWeakRef *jweak;
+
+typedef struct _Jv_JNIEnv JNIEnv;
+typedef struct _Jv_JavaVM JavaVM;
+
+#define JNI_TRUE true
+#define JNI_FALSE false
+
+/* We defined jobject and friends, so don't redefine them in jni.h. */
+#define _CLASSPATH_VM_JNI_TYPES_DEFINED
+
+/* We defined jmethodID and and jfieldID, so don't redefine them in
+ jni.h. */
+#define _CLASSPATH_VM_INTERNAL_TYPES_DEFINED
+
+/* Contents of the JNIEnv; but only inside the implementation. */
+#define _CLASSPATH_JNIENV_CONTENTS \
+ /* The current exception. */ \
+ jthrowable ex; \
+ \
+ /* The chain of local frames. */ \
+ struct _Jv_JNI_LocalFrame *locals; \
+ \
+ /* The bottom-most element of the chain, initialized with the env and \
+ reused between non-nesting JNI calls. */ \
+ struct _Jv_JNI_LocalFrame *bottom_locals;
+
+
+#else /* __GCJ_JNI_IMPL__ */
+
+# ifdef __GNUC__
+
+/* If we're using gcc, we can use a platform-independent scheme to get
+ the right integer types. FIXME: this is not always correct, for
+ instance on the c4x it will be wrong -- it depends on whether
+ QImode is 8 bits. */
+typedef int jbyte __attribute__((__mode__(__QI__)));
+typedef int jshort __attribute__((__mode__(__HI__)));
+typedef int jint __attribute__((__mode__(__SI__)));
+typedef int jlong __attribute__((__mode__(__DI__)));
+typedef unsigned int jboolean __attribute__((__mode__(__QI__)));
+typedef unsigned short jchar __attribute__((__mode__(__HI__)));
+typedef float jfloat;
+typedef double jdouble;
+typedef jint jsize;
+
+# else /* __GNUC__ */
+
+# ifdef JV_HAVE_INTTYPES_H
+
+/* If <inttypes.h> is available, we use it. */
+
+# include <inttypes.h>
+
+typedef int8_t jbyte;
+typedef int16_t jshort;
+typedef int32_t jint;
+typedef int64_t jlong;
+typedef float jfloat;
+typedef double jdouble;
+typedef jint jsize;
+typedef uint8_t jboolean;
+typedef uint16_t jchar;
+
+# else /* JV_HAVE_INTTYPES_H */
+
+/* For now, we require either gcc or <inttypes.h>. If we did more
+ work at configure time we could get around this, but right now it
+ doesn't seem worth it. */
+# error jni.h not ported to this platform
+
+# endif /* JV_HAVE_INTTYPES_H */
+
+# endif /* __GNUC__ */
+
+#endif /* __GCJ_JNI_IMPL__ */
+
+
+/* Linkage and calling conventions. */
+#if defined (_WIN32) || defined (__WIN32__) || defined (WIN32)
+
+#define JNIIMPORT __declspec(dllimport)
+#define JNIEXPORT __declspec(dllexport)
+
+#define JNICALL __stdcall
+
+#else /* !( _WIN32 || __WIN32__ || WIN32) */
+
+#define JNIIMPORT
+#if defined(__GNUC__) && __GNUC__ > 3
+#define JNIEXPORT __attribute__ ((visibility("default")))
+#else
+#define JNIEXPORT
+#endif
+
+#define JNICALL
+
+#endif /* !( _WIN32 || __WIN32__ || WIN32) */
+
+/* These defines apply to symbols in libgcj */
+#ifdef __GCJ_DLL__
+# ifdef __GCJ_JNI_IMPL__
+# define _CLASSPATH_JNIIMPEXP JNIEXPORT
+# else
+# define _CLASSPATH_JNIIMPEXP JNIIMPORT
+# endif /* ! __GCJ_JNI_IMPL__ */
+#else /* ! __GCJ_DLL__ */
+# define _CLASSPATH_JNIIMPEXP
+#endif /* __GCJ_DLL__ */
+
+#endif /* __GCJ_JNI_MD_H__ */
diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h
new file mode 100644
index 000000000..ec74f295a
--- /dev/null
+++ b/libjava/include/jvm.h
@@ -0,0 +1,804 @@
+// jvm.h - Header file for private implementation information. -*- c++ -*-
+
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JAVA_JVM_H__
+#define __JAVA_JVM_H__
+
+// Define this before including jni.h.
+// jni.h is included by jvmpi.h, which might be included. We define
+// this unconditionally because it is convenient and it lets other
+// files include jni.h without difficulty.
+#define __GCJ_JNI_IMPL__
+
+#include <gcj/javaprims.h>
+
+#include <java-assert.h>
+#include <java-threads.h>
+// Must include java-gc.h before Object.h for the implementation.
+#include <java-gc.h>
+
+#include <java/lang/Object.h>
+
+// Include cni.h before field.h to enable all definitions. FIXME.
+#include <gcj/cni.h>
+#include <gcj/field.h>
+
+#include <java/lang/Thread.h>
+
+#include <sysdep/locks.h>
+
+/* Macro for possible unused arguments. */
+#define MAYBE_UNUSED __attribute__((__unused__))
+
+/* Structure of the virtual table. */
+struct _Jv_VTable
+{
+#ifdef __ia64__
+ typedef struct { void *pc, *gp; } vtable_elt;
+#else
+ typedef void *vtable_elt;
+#endif
+ jclass clas;
+ void *gc_descr;
+
+ // This must be last, as derived classes "extend" this by
+ // adding new data members.
+ vtable_elt method[1];
+
+#ifdef __ia64__
+ void *get_method(int i) { return &method[i]; }
+ void set_method(int i, void *fptr) { method[i] = *(vtable_elt *)fptr; }
+ void *get_finalizer()
+ {
+ // We know that get_finalizer is only used for checking whether
+ // this object needs to have a finalizer registered. So it is
+ // safe to simply return just the PC component of the vtable
+ // slot.
+ return ((vtable_elt *)(get_method(0)))->pc;
+ }
+#else
+ void *get_method(int i) { return method[i]; }
+ void set_method(int i, void *fptr) { method[i] = fptr; }
+ void *get_finalizer() { return get_method(0); }
+#endif
+
+ static size_t vtable_elt_size() { return sizeof(vtable_elt); }
+
+ // Given a method index, return byte offset from the vtable pointer.
+ static jint idx_to_offset (int index)
+ {
+ return (2 * sizeof (void *)) + (index * vtable_elt_size ());
+ }
+
+ static _Jv_VTable *new_vtable (int count);
+};
+
+union _Jv_word
+{
+ jobject o;
+ jint i; // Also stores smaller integral types.
+ jfloat f;
+ jint ia[1]; // Half of _Jv_word2.
+ void* p;
+
+#if SIZEOF_VOID_P == 8
+ // We can safely put a long or a double in here without increasing
+ // the size of _Jv_Word; we take advantage of this in the interpreter.
+ jlong l;
+ jdouble d;
+#endif
+
+ jclass clazz;
+ jstring string;
+ struct _Jv_Field *field;
+ struct _Jv_Utf8Const *utf8;
+ struct _Jv_ResolvedMethod *rmethod;
+};
+
+union _Jv_word2
+{
+ jint ia[2];
+ jlong l;
+ jdouble d;
+};
+
+union _Jv_value
+{
+ jbyte byte_value;
+ jshort short_value;
+ jchar char_value;
+ jint int_value;
+ jlong long_value;
+ jfloat float_value;
+ jdouble double_value;
+ jobject object_value;
+};
+
+/* Extract a character from a Java-style Utf8 string.
+ * PTR points to the current character.
+ * LIMIT points to the end of the Utf8 string.
+ * PTR is incremented to point after the character thta gets returns.
+ * On an error, -1 is returned. */
+#define UTF8_GET(PTR, LIMIT) \
+ ((PTR) >= (LIMIT) ? -1 \
+ : *(PTR) < 128 ? *(PTR)++ \
+ : (*(PTR)&0xE0) == 0xC0 && ((PTR)+=2)<=(LIMIT) && ((PTR)[-1]&0xC0) == 0x80 \
+ ? (((PTR)[-2] & 0x1F) << 6) + ((PTR)[-1] & 0x3F) \
+ : (*(PTR) & 0xF0) == 0xE0 && ((PTR) += 3) <= (LIMIT) \
+ && ((PTR)[-2] & 0xC0) == 0x80 && ((PTR)[-1] & 0xC0) == 0x80 \
+ ? (((PTR)[-3]&0x0F) << 12) + (((PTR)[-2]&0x3F) << 6) + ((PTR)[-1]&0x3F) \
+ : ((PTR)++, -1))
+
+extern int _Jv_strLengthUtf8(const char* str, int len);
+
+typedef struct _Jv_Utf8Const Utf8Const;
+_Jv_Utf8Const *_Jv_makeUtf8Const (const char *s, int len);
+_Jv_Utf8Const *_Jv_makeUtf8Const (jstring string);
+static inline _Jv_Utf8Const *_Jv_makeUtf8Const (const char *s)
+{
+ return _Jv_makeUtf8Const (s, strlen (s));
+}
+extern jboolean _Jv_equalUtf8Consts (const _Jv_Utf8Const *, const _Jv_Utf8Const *);
+extern jboolean _Jv_equal (_Jv_Utf8Const *, jstring, jint);
+extern jboolean _Jv_equaln (_Jv_Utf8Const *, jstring, jint);
+
+/* Helper class which converts a jstring to a temporary char*.
+ Uses the supplied buffer, if non-null. Otherwise, allocates
+ the buffer on the heap. Use the JV_TEMP_UTF_STRING macro,
+ which follows, to automatically allocate a stack buffer if
+ the string is small enough. */
+class _Jv_TempUTFString
+{
+public:
+ _Jv_TempUTFString(jstring jstr, char* buf=0);
+ ~_Jv_TempUTFString();
+
+// Accessors
+ operator const char*() const
+ {
+ return buf_;
+ }
+ const char* buf() const
+ {
+ return buf_;
+ }
+ char* buf()
+ {
+ return buf_;
+ }
+
+private:
+ char* buf_;
+ bool heapAllocated_;
+};
+
+inline _Jv_TempUTFString::_Jv_TempUTFString (jstring jstr, char* buf)
+ : buf_(0), heapAllocated_(false)
+{
+ if (!jstr) return;
+ jsize len = JvGetStringUTFLength (jstr);
+ if (buf)
+ buf_ = buf;
+ else
+ {
+ buf_ = (char*) _Jv_Malloc (len+1);
+ heapAllocated_ = true;
+ }
+
+ JvGetStringUTFRegion (jstr, 0, jstr->length(), buf_);
+ buf_[len] = '\0';
+}
+
+inline _Jv_TempUTFString::~_Jv_TempUTFString ()
+{
+ if (heapAllocated_)
+ _Jv_Free (buf_);
+}
+
+/* Macro which uses _Jv_TempUTFString. Allocates a stack-based
+ buffer if the string and its null terminator are <= 256
+ characters in length. Otherwise, a heap-based buffer is
+ used. The parameters to this macro are the variable name
+ which is an instance of _Jv_TempUTFString (above) and a
+ jstring.
+
+ Sample Usage:
+
+ jstring jstr = getAJString();
+ JV_TEMP_UTF_STRING(utfstr, jstr);
+ printf("The string is: %s\n", utfstr.buf());
+
+ */
+#define JV_TEMP_UTF_STRING(utfstr, jstr) \
+ jstring utfstr##thejstr = (jstr); \
+ jsize utfstr##_len = utfstr##thejstr ? JvGetStringUTFLength (utfstr##thejstr) + 1 : 0; \
+ char utfstr##_buf[utfstr##_len <= 256 ? utfstr##_len : 0]; \
+ _Jv_TempUTFString utfstr(utfstr##thejstr, sizeof(utfstr##_buf)==0 ? 0 : utfstr##_buf)
+
+namespace gcj
+{
+ /* Some constants used during lookup of special class methods. */
+ extern _Jv_Utf8Const *void_signature; /* "()V" */
+ extern _Jv_Utf8Const *clinit_name; /* "<clinit>" */
+ extern _Jv_Utf8Const *init_name; /* "<init>" */
+ extern _Jv_Utf8Const *finit_name; /* "finit$", */
+
+ /* Set to true by _Jv_CreateJavaVM. */
+ extern bool runtimeInitialized;
+
+ /* Print out class names as they are initialized. */
+ extern bool verbose_class_flag;
+
+ /* When true, enable the bytecode verifier and BC-ABI verification. */
+ extern bool verifyClasses;
+
+ /* Thread stack size specified by the -Xss runtime argument. */
+ extern size_t stack_size;
+
+ /* The start time */
+ extern jlong startTime;
+
+ /* The VM arguments */
+ extern JArray<jstring>* vmArgs;
+
+ // Currently loaded classes
+ extern jint loadedClasses;
+
+ // Unloaded classes
+ extern jlong unloadedClasses;
+}
+
+// This class handles all aspects of class preparation and linking.
+class _Jv_Linker
+{
+private:
+ typedef unsigned int uaddr __attribute__ ((mode (pointer)));
+
+ static _Jv_Field *find_field_helper(jclass, _Jv_Utf8Const *, _Jv_Utf8Const *,
+ jclass, jclass *);
+ static _Jv_Field *find_field(jclass, jclass, jclass *, _Jv_Utf8Const *,
+ _Jv_Utf8Const *);
+ static void check_loading_constraints (_Jv_Method *, jclass, jclass);
+ static void prepare_constant_time_tables(jclass);
+ static jshort get_interfaces(jclass, _Jv_ifaces *);
+ static void link_symbol_table(jclass);
+ static void link_exception_table(jclass);
+ static void layout_interface_methods(jclass);
+ static void set_vtable_entries(jclass, _Jv_VTable *);
+ static void make_vtable(jclass);
+ static void ensure_fields_laid_out(jclass);
+ static void ensure_class_linked(jclass);
+ static void ensure_supers_installed(jclass);
+ static void add_miranda_methods(jclass, jclass);
+ static void ensure_method_table_complete(jclass);
+ static void verify_class(jclass);
+ static jshort find_iindex(jclass *, jshort *, jshort);
+ static jshort indexof(void *, void **, jshort);
+ static int get_alignment_from_class(jclass);
+ static void generate_itable(jclass, _Jv_ifaces *, jshort *);
+ static jshort append_partial_itable(jclass, jclass, void **, jshort);
+ static _Jv_Method *search_method_in_superclasses (jclass cls, jclass klass,
+ _Jv_Utf8Const *method_name,
+ _Jv_Utf8Const *method_signature,
+ jclass *found_class,
+ bool check_perms = true);
+ static void *create_error_method(_Jv_Utf8Const *, jclass);
+
+ /* The least significant bit of the signature pointer in a symbol
+ table is set to 1 by the compiler if the reference is "special",
+ i.e. if it is an access to a private field or method. Extract
+ that bit, clearing it in the address and setting the LSB of
+ SPECIAL accordingly. */
+ static void maybe_adjust_signature (_Jv_Utf8Const *&s, uaddr &special)
+ {
+ union {
+ _Jv_Utf8Const *signature;
+ uaddr signature_bits;
+ };
+ signature = s;
+ special = signature_bits & 1;
+ signature_bits -= special;
+ s = signature;
+ }
+
+ static _Jv_Mutex_t resolve_mutex;
+ static void init (void) __attribute__((constructor));
+
+public:
+
+ static bool has_field_p (jclass, _Jv_Utf8Const *);
+ static void print_class_loaded (jclass);
+ static void resolve_class_ref (jclass, jclass *);
+ static void wait_for_state(jclass, int);
+ static _Jv_Method *resolve_method_entry (jclass, jclass &,
+ int, int,
+ bool, bool);
+ static _Jv_word resolve_pool_entry (jclass, int, bool =false);
+ static void resolve_field (_Jv_Field *, java::lang::ClassLoader *);
+ static void verify_type_assertions (jclass);
+ static _Jv_Method *search_method_in_class (jclass, jclass,
+ _Jv_Utf8Const *,
+ _Jv_Utf8Const *,
+ bool check_perms = true);
+ static void layout_vtable_methods(jclass);
+
+ static jbyte read_cpool_entry (_Jv_word *data,
+ const _Jv_Constants *const pool,
+ int index)
+ {
+ _Jv_MutexLock (&resolve_mutex);
+ jbyte tags = pool->tags[index];
+ *data = pool->data[index];
+ _Jv_MutexUnlock (&resolve_mutex);
+ return tags;
+ }
+
+ static void write_cpool_entry (_Jv_word data, jbyte tags,
+ _Jv_Constants *pool,
+ int index)
+ {
+ _Jv_MutexLock (&resolve_mutex);
+ pool->data[index] = data;
+ pool->tags[index] = tags;
+ _Jv_MutexUnlock (&resolve_mutex);
+ }
+};
+
+/* Type of pointer used as finalizer. */
+typedef void _Jv_FinalizerFunc (jobject);
+
+/* Allocate space for a new Java object. */
+void *_Jv_AllocObj (jsize size, jclass cl) __attribute__((__malloc__));
+/* Allocate space for a potentially uninitialized pointer-free object.
+ Interesting only with JV_HASH_SYNCHRONIZATION. */
+void *_Jv_AllocPtrFreeObj (jsize size, jclass cl) __attribute__((__malloc__));
+/* Allocate space for an array of Java objects. */
+void *_Jv_AllocArray (jsize size, jclass cl) __attribute__((__malloc__));
+/* Allocate space that is known to be pointer-free. */
+void *_Jv_AllocBytes (jsize size) __attribute__((__malloc__));
+/* Allocate space for a new non-Java object, which does not have the usual
+ Java object header but may contain pointers to other GC'ed objects. */
+void *_Jv_AllocRawObj (jsize size) __attribute__((__malloc__));
+/* Allocate a double-indirect pointer to a _Jv_ClosureList such that
+ the _Jv_ClosureList gets automatically finalized when it is no
+ longer reachable, not even by other finalizable objects. */
+_Jv_ClosureList **_Jv_ClosureListFinalizer (void) __attribute__((__malloc__));
+/* Explicitly throw an out-of-memory exception. */
+void _Jv_ThrowNoMemory() __attribute__((__noreturn__));
+/* Allocate an object with a single pointer. The first word is reserved
+ for the GC, and the second word is the traced pointer. */
+void *_Jv_AllocTraceOne (jsize size /* incl. reserved slot */);
+/* Ditto, but for two traced pointers. */
+void *_Jv_AllocTraceTwo (jsize size /* incl. reserved slot */);
+/* Initialize the GC. */
+void _Jv_InitGC (void);
+/* Register a finalizer. */
+void _Jv_RegisterFinalizer (void *object, _Jv_FinalizerFunc *method);
+/* Compute the GC descriptor for a class */
+void * _Jv_BuildGCDescr(jclass);
+
+/* Allocate some unscanned, unmoveable memory. Return NULL if out of
+ memory. */
+void *_Jv_MallocUnchecked (jsize size) __attribute__((__malloc__));
+
+/* Initialize finalizers. The argument is a function to be called
+ when a finalizer is ready to be run. */
+void _Jv_GCInitializeFinalizers (void (*notifier) (void));
+/* Run finalizers for objects ready to be finalized.. */
+void _Jv_RunFinalizers (void);
+/* Run all finalizers. Should be called only before exit. */
+void _Jv_RunAllFinalizers (void);
+/* Perform a GC. */
+void _Jv_RunGC (void);
+/* Disable and enable GC. */
+void _Jv_DisableGC (void);
+void _Jv_EnableGC (void);
+/* Register a disappearing link. This is a field F which should be
+ cleared when *F is found to be inaccessible. This is used in the
+ implementation of java.lang.ref.Reference. */
+void _Jv_GCRegisterDisappearingLink (jobject *objp);
+/* Return true if OBJECT should be reclaimed. This is used to
+ implement soft references. */
+jboolean _Jv_GCCanReclaimSoftReference (jobject obj);
+
+/* Register a finalizer for a String object. This is only used by
+ the intern() implementation. */
+void _Jv_RegisterStringFinalizer (jobject str);
+/* This is called to actually finalize a possibly-intern()d String. */
+void _Jv_FinalizeString (jobject str);
+
+/* Return approximation of total size of heap. */
+long _Jv_GCTotalMemory (void);
+/* Return approximation of total free memory. */
+long _Jv_GCFreeMemory (void);
+
+/* Set initial heap size. If SIZE==0, ignore. Should be run before
+ _Jv_InitGC. Not required to have any actual effect. */
+void _Jv_GCSetInitialHeapSize (size_t size);
+
+/* Set maximum heap size. If SIZE==0, unbounded. Should be run
+ before _Jv_InitGC. Not required to have any actual effect. */
+void _Jv_GCSetMaximumHeapSize (size_t size);
+
+/* External interface to setting the heap size. Parses ARG (a number
+ which can optionally have "k" or "m" appended and calls
+ _Jv_GCSetInitialHeapSize. */
+void _Jv_SetInitialHeapSize (const char *arg);
+
+/* External interface to setting the maximum heap size. Parses ARG (a
+ number which can optionally have "k" or "m" appended and calls
+ _Jv_GCSetMaximumHeapSize. */
+void _Jv_SetMaximumHeapSize (const char *arg);
+
+/* External interface for setting the GC_free_space_divisor. Calls
+ GC_set_free_space_divisor and returns the old value. */
+int _Jv_SetGCFreeSpaceDivisor (int div);
+
+/* Free the method cache, if one was allocated. This is only called
+ during thread deregistration. */
+void _Jv_FreeMethodCache ();
+
+/* Set the stack size for threads. Parses ARG, a number which can
+ optionally have "k" or "m" appended. */
+void _Jv_SetStackSize (const char *arg);
+
+extern "C" void JvRunMain (jclass klass, int argc, const char **argv);
+extern "C" void JvRunMainName (const char *name, int argc, const char **argv);
+
+void _Jv_RunMain (jclass klass, const char *name, int argc, const char **argv,
+ bool is_jar);
+
+void _Jv_RunMain (struct _Jv_VMInitArgs *vm_args, jclass klass,
+ const char *name, int argc, const char **argv, bool is_jar);
+
+// Delayed until after _Jv_AllocRawObj is declared.
+inline _Jv_VTable *
+_Jv_VTable::new_vtable (int count)
+{
+ size_t size = sizeof(_Jv_VTable) + (count - 1) * vtable_elt_size ();
+ return (_Jv_VTable *) _Jv_AllocRawObj (size);
+}
+
+// Determine if METH gets an entry in a VTable.
+static inline jboolean _Jv_isVirtualMethod (_Jv_Method *meth)
+{
+ using namespace java::lang::reflect;
+ return (((meth->accflags & (Modifier::STATIC | Modifier::PRIVATE)) == 0)
+ && meth->name->first() != '<');
+}
+
+// This function is used to determine the hash code of an object.
+inline jint
+_Jv_HashCode (jobject obj)
+{
+ // This was chosen to yield relatively well distributed results on
+ // both 32- and 64-bit architectures. Note 0x7fffffff is prime.
+ // FIXME: we assume sizeof(long) == sizeof(void *).
+ return (jint) ((unsigned long) obj % 0x7fffffff);
+}
+
+// Return a raw pointer to the elements of an array given the array
+// and its element type. You might think we could just pick a single
+// array type and use elements() on it, but we can't because we must
+// account for alignment of the element type. When ARRAY is null, we
+// obtain the number of bytes taken by the base part of the array.
+inline char *
+_Jv_GetArrayElementFromElementType (jobject array,
+ jclass element_type)
+{
+ char *elts;
+ if (element_type == JvPrimClass (byte))
+ elts = (char *) elements ((jbyteArray) array);
+ else if (element_type == JvPrimClass (short))
+ elts = (char *) elements ((jshortArray) array);
+ else if (element_type == JvPrimClass (int))
+ elts = (char *) elements ((jintArray) array);
+ else if (element_type == JvPrimClass (long))
+ elts = (char *) elements ((jlongArray) array);
+ else if (element_type == JvPrimClass (boolean))
+ elts = (char *) elements ((jbooleanArray) array);
+ else if (element_type == JvPrimClass (char))
+ elts = (char *) elements ((jcharArray) array);
+ else if (element_type == JvPrimClass (float))
+ elts = (char *) elements ((jfloatArray) array);
+ else if (element_type == JvPrimClass (double))
+ elts = (char *) elements ((jdoubleArray) array);
+ else
+ elts = (char *) elements ((jobjectArray) array);
+ return elts;
+}
+
+extern "C" void _Jv_ThrowBadArrayIndex (jint bad_index)
+ __attribute__((noreturn));
+extern "C" void _Jv_ThrowNullPointerException (void)
+ __attribute__((noreturn));
+extern "C" void _Jv_ThrowNoSuchMethodError (void)
+ __attribute__((noreturn));
+extern "C" void _Jv_ThrowNoSuchFieldError (int)
+ __attribute__((noreturn));
+extern "C" jobject _Jv_NewArray (jint type, jint size)
+ __attribute__((__malloc__));
+extern "C" jobject _Jv_NewMultiArray (jclass klass, jint dims, ...)
+ __attribute__((__malloc__));
+extern "C" void *_Jv_CheckCast (jclass klass, jobject obj);
+extern "C" void *_Jv_LookupInterfaceMethod (jclass klass, Utf8Const *name,
+ Utf8Const *signature);
+extern "C" void *_Jv_LookupInterfaceMethodIdx (jclass klass, jclass iface,
+ int meth_idx);
+extern "C" void _Jv_CheckArrayStore (jobject array, jobject obj);
+extern "C" void _Jv_RegisterClass (jclass klass);
+extern "C" void _Jv_RegisterClasses (const jclass *classes);
+extern "C" void _Jv_RegisterClasses_Counted (const jclass *classes,
+ size_t count);
+extern "C" void _Jv_RegisterResource (void *vptr);
+extern void _Jv_UnregisterClass (_Jv_Utf8Const*, java::lang::ClassLoader*);
+
+extern "C" jobject _Jv_UnwrapJNIweakReference (jobject);
+
+extern jclass _Jv_FindClass (_Jv_Utf8Const *name,
+ java::lang::ClassLoader *loader);
+
+extern jclass _Jv_FindClassNoException (_Jv_Utf8Const *name,
+ java::lang::ClassLoader *loader);
+
+extern jclass _Jv_FindClassFromSignature (char *,
+ java::lang::ClassLoader *loader,
+ char ** = NULL);
+
+extern jclass _Jv_FindClassFromSignatureNoException (char *,
+ java::lang::ClassLoader *loader,
+ char ** = NULL);
+
+extern void _Jv_GetTypesFromSignature (jmethodID method,
+ jclass declaringClass,
+ JArray<jclass> **arg_types_out,
+ jclass *return_type_out);
+
+extern jboolean _Jv_CheckAccess (jclass self_klass, jclass other_klass,
+ jint flags);
+
+extern jobject _Jv_CallAnyMethodA (jobject obj, jclass return_type,
+ jmethodID meth, jboolean is_constructor,
+ JArray<jclass> *parameter_types,
+ jobjectArray args,
+ jclass iface = NULL);
+
+union jvalue;
+extern void _Jv_CallAnyMethodA (jobject obj,
+ jclass return_type,
+ jmethodID meth,
+ jboolean is_constructor,
+ jboolean is_virtual_call,
+ JArray<jclass> *parameter_types,
+ const jvalue *args,
+ jvalue *result,
+ jboolean is_jni_call = true,
+ jclass iface = NULL);
+
+extern void _Jv_CheckOrCreateLoadingConstraint (jclass,
+ java::lang::ClassLoader *);
+
+extern jobject _Jv_NewMultiArray (jclass, jint ndims, jint* dims)
+ __attribute__((__malloc__));
+
+extern "C" void _Jv_ThrowAbstractMethodError () __attribute__((__noreturn__));
+
+/* Checked divide subroutines. */
+extern "C"
+{
+ jint _Jv_divI (jint, jint);
+ jint _Jv_remI (jint, jint);
+ jlong _Jv_divJ (jlong, jlong);
+ jlong _Jv_remJ (jlong, jlong);
+}
+
+/* Get the number of arguments (cf. argc) or 0 if our argument
+ list was never initialized. */
+extern int _Jv_GetNbArgs (void);
+
+/* Get the specified argument (cf. argv[index]) or "" if either
+ our argument list was never initialized or the specified index
+ is out of bounds. */
+extern const char * _Jv_GetSafeArg (int index);
+
+/* Sets our argument list. Can be used by programs with non-standard
+ entry points. */
+extern void _Jv_SetArgs (int argc, const char **argv);
+
+/* Get the name of the running executable. */
+extern const char *_Jv_ThisExecutable (void);
+
+/* Return a pointer to a symbol in executable or loaded library. */
+void *_Jv_FindSymbolInExecutable (const char *);
+
+/* Initialize JNI. */
+extern void _Jv_JNI_Init (void);
+
+/* Get or set the per-thread JNIEnv used by the invocation API. */
+_Jv_JNIEnv *_Jv_GetCurrentJNIEnv ();
+void _Jv_SetCurrentJNIEnv (_Jv_JNIEnv *);
+
+/* Free a JNIEnv. */
+void _Jv_FreeJNIEnv (_Jv_JNIEnv *);
+
+extern "C" void _Jv_JNI_PopSystemFrame (_Jv_JNIEnv *);
+_Jv_JNIEnv *_Jv_GetJNIEnvNewFrameWithLoader (::java::lang::ClassLoader *);
+
+struct _Jv_JavaVM;
+_Jv_JavaVM *_Jv_GetJavaVM ();
+
+/* Get a JVMTI environment */
+struct _Jv_JVMTIEnv;
+_Jv_JVMTIEnv *_Jv_GetJVMTIEnv (void);
+
+/* Initialize JVMTI */
+extern void _Jv_JVMTI_Init (void);
+
+// Some verification functions from defineclass.cc.
+bool _Jv_VerifyFieldSignature (_Jv_Utf8Const*sig);
+bool _Jv_VerifyMethodSignature (_Jv_Utf8Const*sig);
+bool _Jv_VerifyClassName (unsigned char* ptr, _Jv_ushort length);
+bool _Jv_VerifyClassName (_Jv_Utf8Const *name);
+bool _Jv_VerifyIdentifier (_Jv_Utf8Const *);
+bool _Jv_ClassNameSamePackage (_Jv_Utf8Const *name1, _Jv_Utf8Const *name2);
+
+struct _Jv_core_chain
+{
+ int name_length;
+ const char *name;
+ int data_length;
+ const void *data;
+
+ struct _Jv_core_chain *next;
+};
+
+// This is called when new core data is loaded.
+extern void (*_Jv_RegisterCoreHook) (_Jv_core_chain *);
+
+_Jv_core_chain *_Jv_FindCore (_Jv_core_chain *node, jstring name);
+void _Jv_FreeCoreChain (_Jv_core_chain *chain);
+
+#ifdef ENABLE_JVMPI
+
+#include "jvmpi.h"
+
+extern void (*_Jv_JVMPI_Notify_OBJECT_ALLOC) (JVMPI_Event *event);
+extern void (*_Jv_JVMPI_Notify_THREAD_START) (JVMPI_Event *event);
+extern void (*_Jv_JVMPI_Notify_THREAD_END) (JVMPI_Event *event);
+#endif
+
+/* FIXME: this should really be defined in some more generic place */
+#define ROUND(V, A) (((((unsigned) (V))-1) | ((A)-1))+1)
+
+extern void _Jv_RegisterBootstrapPackages ();
+
+#define FLAG_BINARYCOMPAT_ABI (1<<31) /* Class is built with the BC-ABI. */
+
+#define FLAG_BOOTSTRAP_LOADER (1<<30) /* Used when defining a class that
+ should be loaded by the bootstrap
+ loader. */
+
+// These are used to find ABI versions we recognize.
+#define GCJ_CXX_ABI_VERSION (__GNUC__ * 100000 + __GNUC_MINOR__ * 1000)
+
+// This is the old-style BC version ID used by GCJ 4.0.0.
+#define OLD_GCJ_40_BC_ABI_VERSION (4 * 10000 + 0 * 10 + 5)
+
+// New style version IDs used by GCJ 4.0.1 and later.
+#define GCJ_40_BC_ABI_VERSION (4 * 100000 + 0 * 1000)
+
+void _Jv_CheckABIVersion (unsigned long value);
+
+
+inline bool
+_Jv_ClassForBootstrapLoader (unsigned long value)
+{
+ return (value & FLAG_BOOTSTRAP_LOADER);
+}
+
+// It makes the source cleaner if we simply always define this
+// function. If the interpreter is not built, it will never return
+// 'true'.
+extern inline jboolean
+_Jv_IsInterpretedClass (jclass c)
+{
+ return (c->accflags & java::lang::reflect::Modifier::INTERPRETED) != 0;
+}
+
+// Return true if the class was compiled with the BC ABI.
+extern inline jboolean
+_Jv_IsBinaryCompatibilityABI (jclass c)
+{
+ // There isn't really a better test for the ABI type at this point,
+ // that will work once the class has been registered.
+ return c->otable_syms || c->atable_syms || c->itable_syms;
+}
+
+// Returns whether the given class does not really exists (ie. we have no
+// bytecode) but still allows us to do some very conservative actions.
+// E.g. throwing a NoClassDefFoundError with the name of the missing
+// class.
+extern inline jboolean
+_Jv_IsPhantomClass (jclass c)
+{
+ return c->state == JV_STATE_PHANTOM;
+}
+
+// A helper function defined in prims.cc.
+char* _Jv_PrependVersionedLibdir (char* libpath);
+
+
+// An enum for use with JvSetThreadState. We use a C++ enum rather
+// than the Java enum to avoid problems with class initialization
+// during VM bootstrap.
+typedef enum
+{
+ JV_BLOCKED,
+ JV_NEW,
+ JV_RUNNABLE,
+ JV_TERMINATED,
+ JV_TIMED_WAITING,
+ JV_WAITING
+} JvThreadState;
+
+// Temporarily set the thread's state.
+class JvSetThreadState
+{
+private:
+ ::java::lang::Thread *thread;
+ jint saved;
+
+public:
+
+ // Note that 'cthread' could be NULL -- during VM startup there may
+ // not be a Thread available.
+ JvSetThreadState(::java::lang::Thread *cthread, JvThreadState nstate)
+ : thread (cthread),
+ saved (cthread ? cthread->state : (jint)JV_NEW)
+ {
+ if (thread)
+ thread->state = nstate;
+ }
+
+ ~JvSetThreadState()
+ {
+ if (thread)
+ thread->state = saved;
+ }
+};
+
+// This structure is used to represent all the data the native side
+// needs. An object of this type is assigned to the `data' member of
+// the Thread class.
+struct natThread
+{
+ // A thread is either alive, dead, or being sent a signal; if it is
+ // being sent a signal, it is also alive. Thus, if you want to know
+ // if a thread is alive, it is sufficient to test alive_status !=
+ // THREAD_DEAD.
+ volatile obj_addr_t alive_flag;
+
+ // These are used to interrupt sleep and join calls. We can share a
+ // condition variable here since it only ever gets notified when the thread
+ // exits.
+ _Jv_Mutex_t join_mutex;
+ _Jv_ConditionVariable_t join_cond;
+
+ // These are used by Unsafe.park() and Unsafe.unpark().
+ ParkHelper park_helper;
+
+ // This is private data for the thread system layer.
+ _Jv_Thread_t *thread;
+
+ // Each thread has its own JNI object.
+ _Jv_JNIEnv *jni_env;
+};
+
+#endif /* __JAVA_JVM_H__ */
diff --git a/libjava/include/jvmpi.h b/libjava/include/jvmpi.h
new file mode 100644
index 000000000..1af961782
--- /dev/null
+++ b/libjava/include/jvmpi.h
@@ -0,0 +1,227 @@
+/* Copyright (C) 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+/* Note: this file must be compilable by the C compiler (for now,
+ assuming GNU C is ok). This means you must never use `//'
+ comments, and all C++-specific code must be conditional on
+ __cplusplus. */
+
+#ifndef __GCJ_JVMPI_H__
+#define __GCJ_JVMPI_H__
+
+#include <jni.h>
+
+/* JVMPI version numbers. FIXME: this is a semi-random number. The
+ documentation doesn't say what it should be. */
+#define JVMPI_VERSION_1 0x00020001
+
+/* JVMPI return codes. FIXME: These are semi-random numbers. The
+ documentation doesn't say what they should be. */
+#define JVMPI_SUCCESS 0
+#define JVMPI_FAIL 1
+#define JVMPI_NOT_AVAILABLE 2
+
+/* An opaque pointer representing an object ID. */
+struct _jobjectID;
+typedef struct _jobjectID * jobjectID;
+
+typedef struct
+{
+ /* Source line number. */
+ jint lineno;
+ /* Method being executed. */
+ jmethodID method_id;
+} JVMPI_CallFrame;
+
+typedef struct
+{
+ JNIEnv *env_id;
+ /* Number of frames in the call trace. */
+ jint num_frames;
+ /* An array of frames representing the trace. Callees first. */
+ JVMPI_CallFrame *frames;
+} JVMPI_CallTrace;
+
+typedef struct
+{
+ /* Name of the field. */
+ char *field_name;
+ /* Signature of the field. */
+ char *field_signature;
+} JVMPI_Field;
+
+/* The documentation doesn't actually specify what the
+ JVMPI_DUMP_LEVEL macros should be defined to. Here's a reasonable
+ guess. */
+#define JVMPI_DUMP_LEVEL_0 0
+#define JVMPI_DUMP_LEVEL_1 1
+#define JVMPI_DUMP_LEVEL_2 2
+#define JVMPI_DUMP_LEVEL_3 3
+
+typedef struct
+{
+ /* One of JVMPI_DUMP_LEVEL_0, JVMPI_DUMP_LEVEL_1 or
+ JVMPI_DUMP_LEVEL_2. */
+ jint heap_dump_level;
+} JVMPI_HeapDumpArg;
+
+typedef struct
+{
+ /* Offset from the beginning of the method. */
+ jint offset;
+ /* Line number from the beginning of the source file. */
+ jint lineno;
+} JVMPI_Lineno;
+
+typedef struct
+{
+ /* Name of the method. */
+ char *method_name;
+ /* Signature of the method. */
+ char *method_signature;
+ /* Start line number from the beginning of the source file. */
+ jint start_lineno;
+ /* End line number from the beginning of the source file. */
+ jint end_lineno;
+ /* The method ID. */
+ jmethodID method_id;
+} JVMPI_Method;
+
+/* An opaque pointer representing a raw monitor. */
+struct _JVMPI_RawMonitor;
+typedef struct _JVMPI_RawMonitor *JVMPI_RawMonitor;
+
+/* JVMPI event codes. FIXME: These are semi-random numbers. The
+ documentation doesn't say what they should be. */
+#define JVMPI_EVENT_ARENA_DELETE 0
+#define JVMPI_EVENT_ARENA_NEW 1
+#define JVMPI_EVENT_CLASS_LOAD 2
+#define JVMPI_EVENT_CLASS_LOAD_HOOK 3
+#define JVMPI_EVENT_CLASS_UNLOAD 4
+#define JVMPI_EVENT_COMPILED_METHOD_LOAD 5
+#define JVMPI_EVENT_COMPILED_METHOD_UNLOAD 6
+#define JVMPI_EVENT_DATA_DUMP_REQUEST 7
+#define JVMPI_EVENT_DATA_RESET_REQUEST 8
+#define JVMPI_EVENT_GC_FINISH 9
+#define JVMPI_EVENT_GC_START 10
+#define JVMPI_EVENT_HEAP_DUMP 11
+#define JVMPI_EVENT_JNI_GLOBALREF_ALLOC 12
+#define JVMPI_EVENT_JNI_GLOBALREF_FREE 13
+#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_ALLOC 14
+#define JVMPI_EVENT_JNI_WEAK_GLOBALREF_FREE 15
+#define JVMPI_EVENT_JVM_INIT_DONE 16
+#define JVMPI_EVENT_JVM_SHUT_DOWN 17
+#define JVMPI_EVENT_METHOD_ENTRY 18
+#define JVMPI_EVENT_METHOD_ENTRY2 19
+#define JVMPI_EVENT_METHOD_EXIT 20
+#define JVMPI_EVENT_MONITOR_CONTENDED_ENTER 21
+#define JVMPI_EVENT_MONITOR_CONTENDED_ENTERED 22
+#define JVMPI_EVENT_MONITOR_CONTENDED_EXIT 23
+#define JVMPI_EVENT_MONITOR_DUMP 24
+#define JVMPI_EVENT_MONITOR_WAIT 25
+#define JVMPI_EVENT_MONITOR_WAITED 26
+#define JVMPI_EVENT_OBJECT_ALLOC 27
+#define JVMPI_EVENT_OBJECT_DUMP 28
+#define JVMPI_EVENT_OBJECT_FREE 29
+#define JVMPI_EVENT_OBJECT_MOVE 30
+#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTER 31
+#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_ENTERED 32
+#define JVMPI_EVENT_RAW_MONITOR_CONTENDED_EXIT 33
+#define JVMPI_EVENT_THREAD_END 34
+#define JVMPI_EVENT_THREAD_START 35
+#define JVMPI_EVENT_INSTRUCTION_START 36
+
+
+typedef struct
+{
+ /* Event type. */
+ jint event_type;
+
+ /* Evn where this event occurred. */
+ JNIEnv *env_id;
+
+ union
+ {
+ struct
+ {
+ char *class_name;
+ char *source_name;
+ jint num_interfaces;
+ jint num_methods;
+ JVMPI_Method *methods;
+ jint num_static_fields;
+ JVMPI_Field *statics;
+ jint num_instance_fields;
+ JVMPI_Field *instances;
+ jobjectID class_id;
+ } class_load;
+
+ struct
+ {
+ jobjectID class_id;
+ } class_unload;
+
+ struct
+ {
+ jint arena_id;
+ jobjectID class_id;
+ jint is_array;
+ jint size;
+ jobjectID obj_id;
+ } obj_alloc;
+
+ struct
+ {
+ char *thread_name;
+ char *group_name;
+ char *parent_name;
+ jobjectID thread_id;
+ JNIEnv *thread_env_id;
+ } thread_start;
+
+ } u;
+
+} JVMPI_Event;
+
+typedef struct
+{
+ /* JVMPI version number. */
+ jint version;
+
+ /* Implemented by the user... */
+ void (*NotifyEvent) (JVMPI_Event *event);
+
+ /* Implemented by the runtime... */
+ jint (*EnableEvent) (jint event_type, void *arg);
+ jint (*DisableEvent) (jint event_type, void *arg);
+ jint (*RequestEvent) (jint event_type, void *arg);
+ void (*GetCallTrace) (JVMPI_CallTrace *trace, jint depth);
+ void (*ProfilerExit) (jint);
+ JVMPI_RawMonitor (*RawMonitorCreate) (char *lock_name);
+ void (*RawMonitorEnter) (JVMPI_RawMonitor lock_id);
+ void (*RawMonitorExit) (JVMPI_RawMonitor lock_id);
+ void (*RawMonitorWait) (JVMPI_RawMonitor lock_id, jlong ms);
+ void (*RawMonitorNotifyAll) (JVMPI_RawMonitor lock_id);
+ void (*RawMonitorDestroy) (JVMPI_RawMonitor lock_id);
+ jlong (*GetCurrentThreadCpuTime) (void);
+ void (*SuspendThread) (JNIEnv *env);
+ void (*ResumeThread) (JNIEnv *env);
+ jint (*GetThreadStatus) (JNIEnv *env);
+ jboolean (*ThreadHasRun) (JNIEnv *env);
+ jint (*CreateSystemThread) (char *name, jint priority, void (*f) (void *));
+ void (*SetThreadLocalStorage) (JNIEnv *env_id, void *ptr);
+ void *(*GetThreadLocalStorage) (JNIEnv *env_id);
+ void (*DisableGC) (void);
+ void (*EnableGC) (void);
+ void (*RunGC) (void);
+ jobjectID (*GetThreadObject) (JNIEnv *env);
+ jobjectID (*GetMethodClass) (jmethodID mid);
+
+} JVMPI_Interface;
+
+#endif /* __GCJ_JVMPI_H__ */
diff --git a/libjava/include/jvmti-int.h b/libjava/include/jvmti-int.h
new file mode 100644
index 000000000..6b09c8376
--- /dev/null
+++ b/libjava/include/jvmti-int.h
@@ -0,0 +1,94 @@
+/* jvmti-int.h -- Internal JVMTI definitions
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+#ifndef __GCJ_JVTMI_INT_H__
+#define __GCJ_JVMTI_INT_H__
+
+/* A macro to map jvmtiEvent to an index in thread[] and enabled[]
+ in the jvmtiEnv. This will only work if the order of events listed
+ in jvmtiEvent and jvmtiEventCallbacks is kept the same (which should
+ not be a problem). */
+#define EVENT_INDEX(jvmtievent) (int)(jvmtievent - JVMTI_EVENT_VM_INIT)
+
+/* A few globals to help limit the impact of JVMTI on normal operations.
+ False means no JVMTI environment requested that event type. */
+namespace JVMTI
+{
+ // Is JVMTI enabled? (i.e., any jvmtiEnv created?)
+ extern bool enabled;
+
+ // Event notifications
+ extern bool VMInit;
+ extern bool VMDeath;
+ extern bool ThreadStart;
+ extern bool ThreadEnd;
+ extern bool ClassFileLoadHook;
+ extern bool ClassLoad;
+ extern bool ClassPrepare;
+ extern bool VMStart;
+ extern bool Exception;
+ extern bool ExceptionCatch;
+ extern bool SingleStep;
+ extern bool FramePop;
+ extern bool Breakpoint;
+ extern bool FieldAccess;
+ extern bool FieldModification;
+ extern bool MethodEntry;
+ extern bool MethodExit;
+ extern bool NativeMethodBind;
+ extern bool CompiledMethodLoad;
+ extern bool CompiledMethodUnload;
+ extern bool DynamicCodeGenerated;
+ extern bool DataDumpRequest;
+ extern bool reserved72;
+ extern bool MonitorWait;
+ extern bool MonitorWaited;
+ extern bool MonitorContendedEnter;
+ extern bool MonitorContendedEntered;
+ extern bool reserved77;
+ extern bool reserved78;
+ extern bool reserved79;
+ extern bool reserved80;
+ extern bool GarbageCollectionStart;
+ extern bool GarbageCollectionFinish;
+ extern bool ObjectFree;
+ extern bool VMObjectAlloc;
+};
+
+/* A macro to test whether an event should be posted to JVMTI.*/
+#define JVMTI_REQUESTED_EVENT(Event) __builtin_expect (JVMTI::Event, false)
+
+/* Post the event to requesting JVMTI environments.
+
+ For speed, this function should only be called after
+ JVMTI_REQUESTED_EVENT is checked. */
+extern void _Jv_JVMTI_PostEvent (jvmtiEvent type, jthread event_thread, ...);
+// Returns the jvmtiEnv used by the JDWP backend
+extern jvmtiEnv *_Jv_GetJDWP_JVMTIEnv (void);
+
+// Reports JVMTI excpetions
+extern void _Jv_ReportJVMTIExceptionThrow (jthrowable);
+#endif /* __GCJ_JVMTI_INT_H__ */
diff --git a/libjava/include/jvmti_md.h b/libjava/include/jvmti_md.h
new file mode 100644
index 000000000..2270f3f3d
--- /dev/null
+++ b/libjava/include/jvmti_md.h
@@ -0,0 +1,66 @@
+/* jvmti_md.h
+ Copyright (C) 2006, 2007 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+As a special exception, if you link this library with other files to
+produce an executable, this library does not by itself cause the
+resulting executable to be covered by the GNU General Public License.
+This exception does not however invalidate any other reasons why the
+executable file might be covered by the GNU General Public License. */
+
+#ifndef __GCJ_JVMTI_MD_H__
+#define __GCJ_JVMTI_MD_H__
+
+#ifdef __GCJ_JNI_IMPL__
+
+/* If __GCJ_JNI_IMPL__ is defined, then we assume that we're building
+ libgcj itself, and we include functions which should not be exposed
+ to JVMTI users. */
+
+/* The number of event slots needed to keep track of event reporting
+ constraints for an environment. This will only work if the order of
+ events listed in jvmtiEvent and jvmtiEventCallbacks is kept the same
+ (which should not be a problem). */
+#define EVENT_SLOTS \
+ (int)(JVMTI_EVENT_VM_OBJECT_ALLOC - JVMTI_EVENT_VM_INIT + 1)
+
+/* Contents of the jvmtiEnv; but only inside the implementation. */
+#define _CLASSPATH_JVMTIENV_CONTENTS \
+ /* Event handlers registered via SetEventCallbacks */ \
+ jvmtiEventCallbacks callbacks; \
+ \
+ /* Array of event thread for which to report event. */ \
+ /* NULL means all threads. One for each callback. */ \
+ jthread thread[EVENT_SLOTS]; \
+ \
+ /* Array of notification modes for callbacks. */ \
+ /* One for each callback. */ \
+ bool enabled[EVENT_SLOTS];
+
+/* Redefine the standard JVMTI types to something a little more
+ precise than "jobject". */
+#define _CLASSPATH_VM_JVMTI_TYPES_DEFINED
+typedef java::lang::Thread *jthread;
+typedef java::lang::ThreadGroup *jthreadGroup;
+typedef jlong jlocation;
+typedef struct _Jv_rawMonitorID *jrawMonitorID;
+
+#endif /* __GCJ_JNI_IMPL__ */
+
+#endif /* __GCJ_JVMTI_MD_H__ */
diff --git a/libjava/include/mips-signal.h b/libjava/include/mips-signal.h
new file mode 100644
index 000000000..478e3a4e2
--- /dev/null
+++ b/libjava/include/mips-signal.h
@@ -0,0 +1,49 @@
+// mips-signal.h - Catch runtime signals and turn them into exceptions
+// on an mips based Linux system.
+
+/* Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, 2006
+ Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+/* Adapted from sparc-signal.h and powerpc-signal.h
+ by David Daney <ddaney@avtrex.com> */
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+#include <unistd.h>
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#define SIGNAL_HANDLER(_name) \
+static void _name (int _dummy __attribute__ ((__unused__)), \
+ siginfo_t *_info __attribute__ ((__unused__)), \
+ void *_arg __attribute__ ((__unused__)))
+
+#define MAKE_THROW_FRAME(_exception)
+
+#define _INIT_SIG_HANDLER(_SIG, _ACTION) \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _ACTION; \
+ act.sa_flags = SA_SIGINFO | SA_NODEFER; \
+ sigemptyset (&act.sa_mask); \
+ sigaction(_SIG, &act, NULL); \
+ } \
+while (0)
+
+#define INIT_SEGV _INIT_SIG_HANDLER (SIGSEGV, catch_segv)
+
+#define INIT_FPE _INIT_SIG_HANDLER (SIGFPE, catch_fpe)
+#undef HANDLE_DIVIDE_OVERFLOW
+
+#endif /* JAVA_SIGNAL_H */
+
diff --git a/libjava/include/no-gc.h b/libjava/include/no-gc.h
new file mode 100644
index 000000000..ce0ffb810
--- /dev/null
+++ b/libjava/include/no-gc.h
@@ -0,0 +1,23 @@
+// -*- c++ -*-
+// no-gc.h - Defines for no garbage collector.
+
+/* Copyright (C) 1998, 1999, 2006, 2007 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JV_NO_GC__
+#define __JV_NO_GC__
+
+// Suspend the given thread. This includes suspending the calling thread.
+extern "C" void _Jv_SuspendThread (_Jv_Thread_t *);
+
+// Resume a suspended thread.
+extern "C" void _Jv_ResumeThread (_Jv_Thread_t *);
+
+// Is the given thread suspended?
+extern "C" int _Jv_IsThreadSuspended (_Jv_Thread_t *);
+#endif /* __JV_NO_GC__ */
diff --git a/libjava/include/no-threads.h b/libjava/include/no-threads.h
new file mode 100644
index 000000000..a598df3e8
--- /dev/null
+++ b/libjava/include/no-threads.h
@@ -0,0 +1,162 @@
+// -*- c++ -*-
+// no-threads.h - Defines for using no threads.
+
+/* Copyright (C) 1998, 1999, 2004, 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JV_NO_THREADS__
+#define __JV_NO_THREADS__
+
+#include "config.h"
+
+#include <stdlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+//
+// Typedefs.
+//
+
+typedef int _Jv_ConditionVariable_t;
+typedef int _Jv_Mutex_t;
+typedef void _Jv_ThreadStartFunc (java::lang::Thread *);
+
+//
+// Declarations
+//
+
+class _Jv_Thread_t { };
+
+//
+// Condition variables.
+//
+
+inline void
+_Jv_CondInit (_Jv_ConditionVariable_t *)
+{
+}
+
+// Waiting is ok provided there is a timeout. Otherwise we will just
+// wait forever.
+inline int
+_Jv_CondWait (_Jv_ConditionVariable_t *, _Jv_Mutex_t *,
+ jlong millis, jint nanos)
+{
+ if (millis == 0 && nanos == 0)
+ JvFail ("_Jv_CondWait without timeout");
+
+#ifdef HAVE_SLEEP
+ int seconds = millis / 1000;
+ if (seconds > 0)
+ sleep (seconds);
+#endif
+
+ return 0;
+}
+
+inline int
+_Jv_CondNotify (_Jv_ConditionVariable_t *, _Jv_Mutex_t *)
+{
+ // It is ok to notify -- it just has no effect.
+ return 0;
+}
+
+inline int
+_Jv_CondNotifyAll (_Jv_ConditionVariable_t *, _Jv_Mutex_t *)
+{
+ // It is ok to notify -- it just has no effect.
+ return 0;
+}
+
+
+//
+// Mutexes.
+//
+
+inline int _Jv_MutexCheckMonitor (_Jv_Mutex_t *)
+{
+ return 0;
+}
+
+inline void
+_Jv_MutexInit (_Jv_Mutex_t *)
+{
+}
+
+inline int
+_Jv_MutexLock (_Jv_Mutex_t *)
+{
+ return 0;
+}
+
+inline int
+_Jv_MutexUnlock (_Jv_Mutex_t *)
+{
+ return 0;
+}
+
+
+//
+// Thread creation and manipulation.
+//
+
+inline void
+_Jv_InitThreads (void)
+{
+}
+
+_Jv_Thread_t *
+_Jv_ThreadInitData (java::lang::Thread *);
+
+inline void
+_Jv_ThreadDestroyData (_Jv_Thread_t *)
+{
+}
+
+inline java::lang::Thread *
+_Jv_ThreadCurrent (void)
+{
+ extern java::lang::Thread *_Jv_OnlyThread;
+ return _Jv_OnlyThread;
+}
+
+inline void
+_Jv_ThreadYield (void)
+{
+}
+
+inline void
+_Jv_ThreadSetPriority (_Jv_Thread_t *, jint)
+{
+}
+
+inline void
+_Jv_ThreadRegister (_Jv_Thread_t *)
+{
+}
+
+inline void
+_Jv_ThreadUnRegister (void)
+{
+}
+
+void _Jv_ThreadStart (java::lang::Thread *, _Jv_Thread_t *,
+ _Jv_ThreadStartFunc *meth);
+
+inline void
+_Jv_ThreadWait (void)
+{
+}
+
+inline void
+_Jv_ThreadInterrupt (_Jv_Thread_t *)
+{
+}
+
+#endif /* __JV_NO_THREADS__ */
diff --git a/libjava/include/pa-signal.h b/libjava/include/pa-signal.h
new file mode 100644
index 000000000..add132517
--- /dev/null
+++ b/libjava/include/pa-signal.h
@@ -0,0 +1,49 @@
+// pa-signal.h - Catch runtime signals and turn them into exceptions.
+
+/* Copyright (C) 1998, 1999, 2000, 2009 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+#include <sys/syscall.h>
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#define SIGNAL_HANDLER(_name) \
+static void _Jv_##_name (int _dummy __attribute__ ((unused)), \
+ siginfo_t *_info __attribute__ ((__unused__)), \
+ void *arg __attribute__ ((__unused__)))
+
+#define MAKE_THROW_FRAME(_exception)
+
+#define INIT_SEGV \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _Jv_catch_segv; \
+ sigemptyset (&act.sa_mask); \
+ act.sa_flags = SA_SIGINFO; \
+ syscall (SYS_rt_sigaction, SIGSEGV, &act, NULL, _NSIG / 8); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _Jv_catch_fpe; \
+ sigemptyset (&act.sa_mask); \
+ act.sa_flags = SA_SIGINFO; \
+ syscall (SYS_rt_sigaction, SIGFPE, &act, NULL, _NSIG / 8); \
+ } \
+while (0)
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/posix-threads.h b/libjava/include/posix-threads.h
new file mode 100644
index 000000000..59e65f744
--- /dev/null
+++ b/libjava/include/posix-threads.h
@@ -0,0 +1,384 @@
+// -*- c++ -*-
+// posix-threads.h - Defines for using POSIX threads.
+
+/* Copyright (C) 1998, 1999, 2001, 2003, 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JV_POSIX_THREADS__
+#define __JV_POSIX_THREADS__
+
+// NOTE: This file may only reference those pthread functions which
+// are known not to be overridden by the Boehm GC. If in doubt, scan
+// boehm-gc/gc.h. This is yucky but lets us avoid including gc.h
+// everywhere (which would be truly yucky).
+
+#include <pthread.h>
+#include <sched.h>
+#include <sysdep/locks.h>
+
+//
+// Typedefs.
+//
+
+typedef struct _Jv_Thread_t
+{
+ // Flag values are defined in implementation.
+ int flags;
+
+ // Actual thread id.
+ pthread_t thread;
+
+ // Java Thread object.
+ java::lang::Thread *thread_obj;
+
+ // Condition variable and corresponding mutex, used to implement the
+ // interruptable wait/notify mechanism.
+ pthread_cond_t wait_cond;
+ pthread_mutex_t wait_mutex;
+
+ // Next thread for Condition Variable wait-list chain.
+ _Jv_Thread_t *next;
+
+} _Jv_Thread_t;
+
+typedef void _Jv_ThreadStartFunc (java::lang::Thread *);
+
+// Condition Variables used to implement wait/notify/sleep/interrupt.
+typedef struct
+{
+ // Linked list of Threads that are waiting to be notified.
+ _Jv_Thread_t *first;
+
+} _Jv_ConditionVariable_t;
+
+typedef struct
+{
+ // For compatibility, simplicity, and correctness, we do not use the native
+ // pthreads recursive mutex implementation, but simulate them instead.
+
+ // Mutex the thread holds the entire time this mutex is held.
+ pthread_mutex_t mutex;
+
+ // Thread holding this mutex.
+ pthread_t owner;
+
+ // Number of times mutex is held (lock depth). If 0, the lock is not held.
+ int count;
+} _Jv_Mutex_t;
+
+// This is a convenience function used only by the pthreads thread
+// implementation. This is slow, but that's too bad -- we need to do
+// the checks for correctness. It might be nice to be able to compile
+// this out. Returns 0 if the lock is held by the current thread, and
+// 1 otherwise.
+inline int
+_Jv_MutexCheckMonitor (_Jv_Mutex_t *mu)
+{
+ return (mu->owner != pthread_self());
+}
+
+// Type identifying a POSIX thread.
+typedef pthread_t _Jv_ThreadDesc_t;
+
+inline _Jv_ThreadDesc_t
+_Jv_GetPlatformThreadID(_Jv_Thread_t *t)
+{
+ return t->thread;
+}
+
+//
+// Signal helpers.
+//
+
+void _Jv_BlockSigchld();
+void _Jv_UnBlockSigchld();
+
+
+//
+// Condition variables.
+//
+
+int _Jv_CondWait (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu,
+ jlong millis, jint nanos);
+
+int _Jv_CondNotify (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu);
+
+int _Jv_CondNotifyAll (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu);
+
+inline void
+_Jv_CondInit (_Jv_ConditionVariable_t *cv)
+{
+ cv->first = 0;
+}
+
+//
+// Mutexes.
+//
+
+#ifdef LOCK_DEBUG
+# include <stdio.h>
+#endif
+
+inline void
+_Jv_MutexInit (_Jv_Mutex_t *mu)
+{
+# ifdef LOCK_DEBUG /* Assumes Linuxthreads */
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+ pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
+ pthread_mutex_init (&mu->mutex, &attr);
+# else
+ pthread_mutex_init (&mu->mutex, 0);
+# endif
+
+ mu->count = 0;
+ mu->owner = 0;
+}
+
+extern int _Jv_MutexLock (_Jv_Mutex_t *);
+
+inline int
+_Jv_MutexUnlock (_Jv_Mutex_t *mu)
+{
+ if (_Jv_MutexCheckMonitor (mu))
+ {
+# ifdef LOCK_DEBUG
+ fprintf(stderr, "_Jv_MutexUnlock: Not owner\n");
+ for (;;) {}
+# endif
+ return 1;
+ }
+
+ mu->count--;
+
+ if (mu->count == 0)
+ {
+ mu->owner = 0;
+# ifdef LOCK_DEBUG
+ int result = pthread_mutex_unlock (&mu->mutex);
+ if (0 != result)
+ {
+ fprintf(stderr, "Pthread_mutex_unlock returned %d\n", result);
+ for (;;) {}
+ }
+# else
+ pthread_mutex_unlock (&mu->mutex);
+# endif
+ }
+ return 0;
+}
+
+#ifndef LINUX_THREADS
+
+// pthread_mutex_destroy does nothing on Linux and it is a win to avoid
+// defining this macro.
+
+#define _Jv_HaveMutexDestroy
+
+inline void
+_Jv_MutexDestroy (_Jv_Mutex_t *mu)
+{
+ pthread_mutex_destroy (&mu->mutex);
+}
+
+#endif /* LINUX_THREADS */
+
+//
+// Thread creation and manipulation.
+//
+
+void _Jv_InitThreads (void);
+
+_Jv_Thread_t *_Jv_ThreadInitData (java::lang::Thread *thread);
+void _Jv_ThreadDestroyData (_Jv_Thread_t *data);
+
+inline java::lang::Thread *
+_Jv_ThreadCurrent (void)
+{
+ extern pthread_key_t _Jv_ThreadKey;
+ return (java::lang::Thread *) pthread_getspecific (_Jv_ThreadKey);
+}
+
+#ifdef JV_HASH_SYNCHRONIZATION
+// Should be specialized to just load the "current thread" register
+// on platforms that support it. Speed is of the essence. The value
+// of the descriptor is not, so long as there is a one-to-one correspondence
+// to threads.
+
+
+#ifdef __ia64__
+
+typedef size_t _Jv_ThreadId_t;
+
+register size_t _Jv_self __asm__("r13");
+ // For linux_threads this is really a pointer to its thread data
+ // structure. We treat it as opaque. That should also work
+ // on other operating systems that follow the ABI standard.
+
+// This should become the prototype for machines that maintain a thread
+// pointer in a register.
+inline _Jv_ThreadId_t
+_Jv_ThreadSelf (void)
+{
+ return _Jv_self;
+}
+
+#define JV_SELF_DEFINED
+
+#endif /* __ia64__ */
+
+#ifdef __alpha__
+
+typedef void *_Jv_ThreadId_t;
+
+inline _Jv_ThreadId_t
+_Jv_ThreadSelf (void)
+{
+ return __builtin_thread_pointer ();
+}
+
+#define JV_SELF_DEFINED
+
+#endif /* __alpha__ */
+
+#if defined(SLOW_PTHREAD_SELF)
+
+#include "sysdep/locks.h"
+
+typedef pthread_t _Jv_ThreadId_t;
+
+// E.g. on X86 Linux, pthread_self() is too slow for our purpose.
+// Instead we maintain a cache based on the current sp value.
+// This is similar to what's done for thread local allocation in the
+// GC, only far simpler.
+// This code should probably go away when Linux/X86 starts using a
+// segment register to hold the thread id.
+# define LOG_THREAD_SPACING 12
+ // If two thread pointer values are closer than
+ // 1 << LOG_THREAD_SPACING, we assume they belong
+ // to the same thread.
+# define SELF_CACHE_SIZE 1024
+# define SC_INDEX(sp) (((unsigned long)(sp) >> 19) & (SELF_CACHE_SIZE-1))
+ // Mapping from sp value to cache index.
+ // Note that this is not in any real sense a hash
+ // function, since we need to be able to clear
+ // all possibly matching slots on thread startup.
+ // Thus all entries that might correspond to
+ // a given thread are intentionally contiguous.
+ // Works well with anything that allocates at least
+ // 512KB stacks.
+# define SC_CLEAR_MIN (-16) // When starting a new thread, we clear
+# define SC_CLEAR_MAX 0 // all self cache entries between
+ // SC_INDEX(sp)+SC_CLEAR_MIN and
+ // SC_INDEX(sp)+SC_CLEAR_MAX to ensure
+ // we never see stale values. The
+ // current values assume a downward
+ // growing stack of size <= 7.5 MB.
+# define BAD_HIGH_SP_VALUE ((size_t)(-1))
+
+extern volatile
+struct self_cache_entry {
+ size_t high_sp_bits; // sp value >> LOG_THREAD_SPACING
+ pthread_t self; // Corresponding thread
+} _Jv_self_cache[];
+
+void _Jv_Self_Cache_Init();
+
+_Jv_ThreadId_t
+_Jv_ThreadSelf_out_of_line(volatile self_cache_entry *sce,
+ size_t high_sp_bits);
+
+inline _Jv_ThreadId_t
+_Jv_ThreadSelf (void)
+{
+ int dummy;
+ size_t sp = (size_t)(&dummy);
+ unsigned h = SC_INDEX(sp);
+ volatile self_cache_entry *sce = _Jv_self_cache + h;
+ pthread_t candidate_self = sce -> self; // Read must precede following one.
+ read_barrier();
+ if (sce -> high_sp_bits == sp >> LOG_THREAD_SPACING)
+ {
+ // The sce -> self value we read must be valid. An intervening
+ // cache replacement by another thread would have first replaced
+ // high_sp_bits by something else, and it can't possibly change
+ // back without our intervention.
+ return candidate_self;
+ }
+ else
+ return _Jv_ThreadSelf_out_of_line(sce, sp >> LOG_THREAD_SPACING);
+}
+
+#define JV_SELF_DEFINED
+
+#endif /* SLOW_PTHREAD_SELF */
+
+#ifndef JV_SELF_DEFINED /* If all else fails, call pthread_self directly */
+
+typedef pthread_t _Jv_ThreadId_t;
+
+inline _Jv_ThreadId_t
+_Jv_ThreadSelf (void)
+{
+ return pthread_self();
+}
+
+#endif /* !JV_SELF_DEFINED */
+
+#endif /* JV_HASH_SYNCHRONIZATION */
+
+inline _Jv_Thread_t *
+_Jv_ThreadCurrentData (void)
+{
+ extern pthread_key_t _Jv_ThreadDataKey;
+ return (_Jv_Thread_t *) pthread_getspecific (_Jv_ThreadDataKey);
+}
+
+inline void
+_Jv_ThreadYield (void)
+{
+#ifdef HAVE_SCHED_YIELD
+ sched_yield ();
+#endif /* HAVE_SCHED_YIELD */
+}
+
+void _Jv_ThreadRegister (_Jv_Thread_t *data);
+void _Jv_ThreadUnRegister ();
+
+void _Jv_ThreadSetPriority (_Jv_Thread_t *data, jint prio);
+
+void _Jv_ThreadStart (java::lang::Thread *thread, _Jv_Thread_t *data,
+ _Jv_ThreadStartFunc *meth);
+
+void _Jv_ThreadWait (void);
+
+void _Jv_ThreadInterrupt (_Jv_Thread_t *data);
+
+// park() / unpark() support
+
+struct ParkHelper
+{
+ volatile obj_addr_t permit;
+ pthread_mutex_t mutex;
+ pthread_cond_t cond;
+
+ void init ();
+ void deactivate ();
+ void destroy ();
+ void park (jboolean isAbsolute, jlong time);
+ void unpark ();
+};
+
+inline void
+ParkHelper::destroy ()
+{
+ pthread_mutex_destroy (&mutex);
+ pthread_cond_destroy (&cond);
+}
+
+#endif /* __JV_POSIX_THREADS__ */
diff --git a/libjava/include/posix.h b/libjava/include/posix.h
new file mode 100644
index 000000000..c49da05eb
--- /dev/null
+++ b/libjava/include/posix.h
@@ -0,0 +1,207 @@
+// posix.h -- Helper functions for POSIX-flavored OSs.
+
+/* Copyright (C) 2000, 2002, 2003, 2006, 2010 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JV_POSIX_H__
+#define __JV_POSIX_H__
+
+/* Required on Tru64 UNIX V4/V5 so <sys/socket.h> defines prototypes of
+ socket functions with socklen_t instead of size_t. This must be defined
+ early so <standards.h> defines the correct version of __PIIX. */
+#define _POSIX_PII_SOCKET
+
+#include <time.h>
+#include <sys/types.h>
+
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#endif
+
+#ifdef HAVE_SYS_SELECT_H
+#include <sys/select.h>
+#endif
+
+#ifdef HAVE_SYS_SOCKET_H
+#include <sys/socket.h>
+#endif
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+#include <fcntl.h>
+
+/* The header file <sys/rw_lock.h> needs to be included before javaprims.h
+ on HP-UX 11 to avoid a compilation error. */
+#ifdef HAVE_SYS_RW_LOCK_H
+#include <sys/rw_lock.h>
+#endif
+
+#include <gcj/cni.h>
+#include <java/util/Properties.h>
+
+// Prefix and suffix for shared libraries.
+#define _Jv_platform_solib_prefix "lib"
+#if defined(__APPLE__) && defined(__MACH__)
+#define _Jv_platform_solib_suffix ".dylib"
+#elif defined(HPUX) && defined(HP_PA)
+#define _Jv_platform_solib_suffix ".sl"
+#else
+#define _Jv_platform_solib_suffix ".so"
+#endif
+
+#if __MACH__ && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1060)
+# undef _Unwind_FindEnclosingFunction
+# define _Unwind_FindEnclosingFunction(PC) _darwin10_Unwind_FindEnclosingFunction(PC)
+#endif
+
+// Some POSIX systems don't have O_SYNC and O_DYSNC so we define them here.
+// Needed in java/io/natFileDescriptorPosix.cc.
+#if !defined (O_SYNC) && defined (O_FSYNC)
+#define O_SYNC O_FSYNC
+#endif
+#if !defined (O_DSYNC) && defined (O_FSYNC)
+#define O_DSYNC O_FSYNC
+#endif
+// If O_DSYNC is still not defined, use O_SYNC (needed for newlib)
+#if !defined (O_DSYNC)
+#define O_DSYNC O_SYNC
+#endif
+
+// Name of the Process implementation.
+#ifdef ECOS
+#define _Jv_platform_process ::java::lang::EcosProcess
+#else
+#define _Jv_platform_process ::java::lang::PosixProcess
+#endif
+
+// Separator for file name components.
+#define _Jv_platform_file_separator ((jchar) '/')
+// Separator for path components.
+#define _Jv_platform_path_separator ((jchar) ':')
+
+// List of names for `JNI_OnLoad'.
+#define _Jv_platform_onload_names { "JNI_OnLoad", NULL }
+
+// Type of libffi ABI used by JNICALL methods. NOTE: This must agree
+// with the JNICALL definition in jni.h
+#define _Jv_platform_ffi_abi FFI_DEFAULT_ABI
+
+#ifndef DISABLE_JAVA_NET
+#include <java/net/InetAddress.h>
+#endif
+
+extern int _Jv_select (int n, fd_set *, fd_set *, fd_set *, struct timeval *);
+extern jlong _Jv_platform_gettimeofday ();
+extern jlong _Jv_platform_nanotime ();
+extern void _Jv_platform_initialize (void);
+extern void _Jv_platform_initProperties (java::util::Properties*);
+
+#ifdef JV_HASH_SYNCHRONIZATION
+#ifndef HAVE_USLEEP_DECL
+extern "C" int usleep (useconds_t useconds);
+#endif /* not HAVE_USLEEP_DECL */
+
+inline void
+_Jv_platform_usleep (unsigned long usecs)
+{
+ usleep (usecs);
+}
+#endif /* JV_HASH_SYNCHRONIZATION */
+
+#ifndef DISABLE_JAVA_NET
+
+#ifndef HAVE_SOCKLEN_T
+#define socklen_t int
+#endif
+
+static inline int
+_Jv_socket (int domain, int type, int protocol)
+{
+ return ::socket (domain, type, protocol);
+}
+
+#undef socket
+
+inline int
+_Jv_connect (jint fd, sockaddr *ptr, int len)
+{
+ return ::connect (fd, ptr, len);
+}
+
+#undef connect
+
+inline int
+_Jv_close (jint fd)
+{
+ return ::close (fd);
+}
+
+#undef close
+
+// Avoid macro definitions of bind from system headers, e.g. on
+// Solaris 7 with _XOPEN_SOURCE. FIXME
+inline int
+_Jv_bind (int fd, struct sockaddr *addr, int addrlen)
+{
+ return ::bind (fd, addr, addrlen);
+}
+
+#undef bind
+
+// Same problem with accept on Tru64 UNIX with _POSIX_PII_SOCKET
+inline int
+_Jv_accept (int fd, struct sockaddr *addr, socklen_t *addrlen)
+{
+ return ::accept (fd, addr, addrlen);
+}
+
+#undef accept
+
+inline int
+_Jv_listen (int fd, int backlog)
+{
+ return ::listen (fd, backlog);
+}
+
+#undef listen
+
+inline int
+_Jv_write(int s, void *buf, int len)
+{
+ return ::write (s, buf, len);
+}
+
+#undef write
+
+inline int
+_Jv_read(int s, void *buf, int len)
+{
+ return ::read (s, buf, len);
+}
+
+#undef read
+
+#endif /* DISABLE_JAVA_NET */
+
+// Wraps ::pipe
+static inline int
+_Jv_pipe (int filedes[2])
+{
+ return ::pipe (filedes);
+}
+
+// Forward declaration. See java-stack.h for definition.
+struct _Jv_AddrInfo;
+
+// Given an address, determine the executable or shared object that defines
+// it and the nearest named symbol.
+extern int _Jv_platform_dladdr (void *addr, _Jv_AddrInfo *info);
+
+#endif /* __JV_POSIX_H__ */
diff --git a/libjava/include/powerpc-signal.h b/libjava/include/powerpc-signal.h
new file mode 100644
index 000000000..9c6ddac37
--- /dev/null
+++ b/libjava/include/powerpc-signal.h
@@ -0,0 +1,113 @@
+// powerpc-signal.h - Catch runtime signals and turn them into exceptions
+// on a powerpc based Linux system.
+
+/* Copyright (C) 2003, 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+#include <sys/syscall.h>
+
+#define HANDLE_SEGV 1
+#undef HANDLE_FPE
+
+#define SIGNAL_HANDLER(_name) \
+ static void _name (int /* _signal */, struct sigcontext *_sc)
+
+/* MD_FALLBACK_FRAME_STATE_FOR takes care of special casing PC
+ before the faulting instruction, so we don't need to do anything
+ here. */
+
+#define MAKE_THROW_FRAME(_exception)
+
+/* For an explanation why we cannot simply use sigaction to
+ install the handlers, see i386-signal.h. */
+
+/* We use kernel_old_sigaction here because we're calling the kernel
+ directly rather than via glibc. The sigaction structure that the
+ syscall uses is a different shape from the one in userland and not
+ visible to us in a header file so we define it here.
+ Additionally we want a proper prototype for the handler function
+ with the struct sigcontext pointer passed by the kernel as the 2nd
+ argument, which isn't there in userland headers.
+
+ Note that we explicitly avoid the SA_SIGINFO flag in INIT_SEGV and
+ INIT_FPE below. Using the ucontext pointer passed as 3rd argument
+ of a SA_SIGINFO type handler would need complicated backwards
+ compatibility hacks in MAKE_THROW_FRAME, as the ucontext layout
+ on PPC changed during the 2.5 kernel series. */
+
+#ifndef __powerpc64__
+struct kernel_old_sigaction {
+ void (*k_sa_handler) (int, struct sigcontext *);
+ unsigned long k_sa_mask;
+ unsigned long k_sa_flags;
+ void (*k_sa_restorer) (void);
+};
+
+#define INIT_SEGV \
+do \
+ { \
+ struct kernel_old_sigaction kact; \
+ kact.k_sa_handler = catch_segv; \
+ kact.k_sa_mask = 0; \
+ kact.k_sa_flags = 0; \
+ if (syscall (SYS_sigaction, SIGSEGV, &kact, NULL) != 0) \
+ __asm__ __volatile__ (".long 0"); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct kernel_old_sigaction kact; \
+ kact.k_sa_handler = catch_fpe; \
+ kact.k_sa_mask = 0; \
+ kact.k_sa_flags = 0; \
+ if (syscall (SYS_sigaction, SIGFPE, &kact, NULL) != 0) \
+ __asm__ __volatile__ (".long 0"); \
+ } \
+while (0)
+
+#else /* powerpc64 */
+
+struct kernel_sigaction
+{
+ void (*k_sa_handler) (int, struct sigcontext *);
+ unsigned long k_sa_flags;
+ void (*k_sa_restorer)(void);
+ unsigned long k_sa_mask;
+};
+
+#define INIT_SEGV \
+do \
+ { \
+ struct kernel_sigaction kact; \
+ memset (&kact, 0, sizeof (kact)); \
+ kact.k_sa_handler = catch_segv; \
+ if (syscall (SYS_rt_sigaction, SIGSEGV, &kact, NULL, 8) != 0) \
+ __asm__ __volatile__ (".long 0"); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct kernel_sigaction kact; \
+ memset (&kact, 0, sizeof (kact)); \
+ kact.k_sa_handler = catch_fpe; \
+ if (syscall (SYS_rt_sigaction, SIGFPE, &kact, NULL, 8) != 0) \
+ __asm__ __volatile__ (".long 0"); \
+ } \
+while (0)
+#endif
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/s390-signal.h b/libjava/include/s390-signal.h
new file mode 100644
index 000000000..4ca4c1088
--- /dev/null
+++ b/libjava/include/s390-signal.h
@@ -0,0 +1,288 @@
+// s390-signal.h - Catch runtime signals and turn them into exceptions
+// on an s390 based Linux system.
+
+/* Copyright (C) 2002, 2010 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+#include <sys/syscall.h>
+#include <ucontext.h>
+#include <limits.h>
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#define SIGNAL_HANDLER(_name) \
+static void _name (int, siginfo_t *_si __attribute__((unused)), \
+ ucontext_t *_uc __attribute__((unused)))
+
+/* We no longer need to fiddle with the PSW address in the signal handler;
+ this is now all handled correctly in MD_FALLBACK_FRAME_STATE_FOR. */
+#define MAKE_THROW_FRAME(_exception)
+
+
+/* According to the JVM spec, "if the dividend is the negative integer
+ of the smallest magnitude and the divisor is -1, then overflow occurs
+ and the result is equal to the dividend. Despite the overflow, no
+ exception occurs".
+
+ We handle this by inspecting the instruction which generated the signal,
+ and if dividend and divisor are as above, we simply return from the signal
+ handler. This causes execution to continue after the instruction.
+ Before returning, we the set result registers as expected. */
+#define UC_EXTENDED 0x00000001
+
+#define HANDLE_DIVIDE_OVERFLOW \
+do \
+{ \
+ unsigned char *_eip = (unsigned char *) \
+ __builtin_extract_return_addr (_si->si_addr); \
+ unsigned long *_regs = _uc->uc_mcontext.gregs; \
+ int _r1, _r2, _d2, _x2, _b2; \
+ struct \
+ { \
+ unsigned long int uc_flags; \
+ struct ucontext *uc_link; \
+ stack_t uc_stack; \
+ mcontext_t uc_mcontext; \
+ unsigned long sigmask[2]; \
+ unsigned long ext_regs[16]; \
+ } *_uc_ext = (typeof(_uc_ext))_uc; \
+ \
+ /* First, a couple of helper routines to decode instructions. */ \
+ struct _decode \
+ { \
+ /* Decode RR instruction format. */ \
+ static inline int _is_rr (unsigned char *_eip, \
+ unsigned char _op, \
+ int *_r1, int *_r2) \
+ { \
+ if (_eip[0] == _op) \
+ { \
+ *_r1 = _eip[1] >> 4; \
+ *_r2 = _eip[1] & 0xf; \
+ return 1; \
+ } \
+ return 0; \
+ } \
+ \
+ /* Decode RX instruction format. */ \
+ static inline int _is_rx (unsigned char *_eip, \
+ unsigned char _op, \
+ int *_r1, int *_d2, int *_x2, int *_b2) \
+ { \
+ if (_eip[0] == _op) \
+ { \
+ *_r1 = _eip[1] >> 4; \
+ *_x2 = _eip[1] & 0xf; \
+ *_b2 = _eip[2] >> 4; \
+ *_d2 = ((_eip[2] & 0xf) << 8) + _eip[3]; \
+ return 1; \
+ } \
+ return 0; \
+ } \
+ \
+ /* Decode RRE instruction format. */ \
+ static inline int _is_rre (unsigned char *_eip, \
+ unsigned char _op1, unsigned char _op2,\
+ int *_r1, int *_r2) \
+ { \
+ if (_eip[0] == _op1 && _eip[1] == _op2) \
+ { \
+ *_r1 = _eip[3] >> 4; \
+ *_r2 = _eip[3] & 0xf; \
+ return 1; \
+ } \
+ return 0; \
+ } \
+ \
+ /* Decode RXY instruction format. */ \
+ static inline int _is_rxy (unsigned char *_eip, \
+ unsigned char _op1, unsigned char _op2,\
+ int *_r1, int *_d2, int *_x2, int *_b2)\
+ { \
+ if (_eip[0] == _op1 && _eip[5] == _op2) \
+ { \
+ *_r1 = _eip[1] >> 4; \
+ *_x2 = _eip[1] & 0xf; \
+ *_b2 = _eip[2] >> 4; \
+ *_d2 = ((_eip[2] & 0xf) << 8) + _eip[3] + (_eip[4] << 12); \
+ /* We have a 20-bit signed displacement. */ \
+ *_d2 = (*_d2 ^ 0x80000) - 0x80000; \
+ return 1; \
+ } \
+ return 0; \
+ } \
+ \
+ /* Compute effective address. */ \
+ static inline unsigned long _eff (unsigned long *_regs, \
+ long _d, int _x, int _b) \
+ { \
+ return _d + (_x? _regs[_x] : 0) + (_b? _regs[_b] : 0); \
+ } \
+ \
+ static inline int is_long_long_min_p (unsigned long *_regs, \
+ unsigned long *_ext_regs, \
+ int _r) \
+ { \
+ return ((long long)_regs[_r] \
+ | (long long)_ext_regs[_r] << 32) == \
+ LONG_LONG_MIN; \
+ } \
+ }; \
+ \
+ /* DR r1,r2 */ \
+ if (_decode::_is_rr (_eip, 0x1d, &_r1, &_r2) \
+ && (int) _regs[_r1] == -1 && (int) _regs[_r1+1] == INT_MIN \
+ && (int) _regs[_r2] == -1) \
+ { \
+ _regs[_r1] &= ~0xffffffff; \
+ return; \
+ } \
+ \
+ /* D r1,d2(x2,b2) */ \
+ if (_decode::_is_rx (_eip, 0x5d, &_r1, &_d2, &_x2, &_b2) \
+ && (int) _regs[_r1] == -1 && (int) _regs[_r1+1] == INT_MIN \
+ && *(int *) _decode::_eff (_regs, _d2, _x2, _b2) == -1) \
+ { \
+ _regs[_r1] &= ~0xffffffff; \
+ return; \
+ } \
+ \
+ /* DSGR r1,r2 */ \
+ if (_decode::_is_rre (_eip, 0xb9, 0x0d, &_r1, &_r2) \
+ && (long) _regs[_r1+1] == LONG_MIN \
+ && (long) _regs[_r2] == -1L) \
+ { \
+ _regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSGFR r1,r2 */ \
+ if (_decode::_is_rre (_eip, 0xb9, 0x1d, &_r1, &_r2) \
+ && (long) _regs[_r1+1] == LONG_MIN \
+ && (int) _regs[_r2] == -1) \
+ { \
+ _regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSG r1,d2(x2,b2) */ \
+ if (_decode::_is_rxy (_eip, 0xe3, 0x0d, &_r1, &_d2, &_x2, &_b2) \
+ && (long) _regs[_r1+1] == LONG_MIN \
+ && *(long *) _decode::_eff (_regs, _d2, _x2, _b2) == -1L) \
+ { \
+ _regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSGF r1,d2(x2,b2) */ \
+ if (_decode::_is_rxy (_eip, 0xe3, 0x1d, &_r1, &_d2, &_x2, &_b2) \
+ && (long) _regs[_r1+1] == LONG_MIN \
+ && *(int *) _decode::_eff (_regs, _d2, _x2, _b2) == -1) \
+ { \
+ _regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* The extended ucontext contains the upper halfs of the 64bit \
+ registers in 31bit applications. */ \
+ if (_uc->uc_flags & 1 == 1) \
+ { \
+ /* DSGR r1,r2 */ \
+ if (_decode::_is_rre (_eip, 0xb9, 0x0d, &_r1, &_r2) \
+ && (int) _regs[_r2] == -1 \
+ && (int) _uc_ext->ext_regs[_r2] == -1 \
+ && _decode::is_long_long_min_p (_regs, _uc_ext->ext_regs, \
+ _r1 + 1)) \
+ { \
+ _regs[_r1] = 0; \
+ _uc_ext->ext_regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSGFR r1,r2 */ \
+ if (_decode::_is_rre (_eip, 0xb9, 0x1d, &_r1, &_r2) \
+ && (int) _regs[_r2] == -1 \
+ && _decode::is_long_long_min_p (_regs, _uc_ext->ext_regs, \
+ _r1 + 1)) \
+ { \
+ _regs[_r1] = 0; \
+ _uc_ext->ext_regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSG r1,d2(x2,b2) */ \
+ if (_decode::_is_rxy (_eip, 0xe3, 0x0d, &_r1, &_d2, &_x2, &_b2) \
+ && *(int *) _decode::_eff (_regs, _d2, _x2, _b2) == -1 \
+ && *(int *) _decode::_eff (_regs, _d2 + 4, _x2, _b2) == -1 \
+ && _decode::is_long_long_min_p (_regs, _uc_ext->ext_regs, \
+ _r1 + 1)) \
+ { \
+ _regs[_r1] = 0; \
+ _uc_ext->ext_regs[_r1] = 0; \
+ return; \
+ } \
+ \
+ /* DSGF r1,d2(x2,b2) */ \
+ if (_decode::_is_rxy (_eip, 0xe3, 0x1d, &_r1, &_d2, &_x2, &_b2) \
+ && *(int *) _decode::_eff (_regs, _d2, _x2, _b2) == -1 \
+ && _decode::is_long_long_min_p (_regs, _uc_ext->ext_regs, \
+ _r1 + 1)) \
+ { \
+ _regs[_r1] = 0; \
+ _uc_ext->ext_regs[_r1] = 0; \
+ return; \
+ } \
+ } \
+ } \
+while (0)
+
+/* For an explanation why we cannot simply use sigaction to
+ install the handlers, see i386-signal.h. */
+
+/* We use old_kernel_sigaction here because we're calling the kernel
+ directly rather than via glibc. The sigaction structure that the
+ syscall uses is a different shape from the one in userland and not
+ visible to us in a header file so we define it here. */
+
+struct old_s390_kernel_sigaction {
+ void (*k_sa_handler) (int, siginfo_t *, ucontext_t *);
+ unsigned long k_sa_mask;
+ unsigned long k_sa_flags;
+ void (*sa_restorer) (void);
+};
+
+#define INIT_SEGV \
+do \
+ { \
+ struct old_s390_kernel_sigaction kact; \
+ kact.k_sa_handler = catch_segv; \
+ kact.k_sa_mask = 0; \
+ kact.k_sa_flags = SA_SIGINFO; \
+ syscall (SYS_sigaction, SIGSEGV, &kact, NULL); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct old_s390_kernel_sigaction kact; \
+ kact.k_sa_handler = catch_fpe; \
+ kact.k_sa_mask = 0; \
+ kact.k_sa_flags = SA_SIGINFO; \
+ syscall (SYS_sigaction, SIGFPE, &kact, NULL); \
+ } \
+while (0)
+
+#endif /* JAVA_SIGNAL_H */
+
diff --git a/libjava/include/sh-signal.h b/libjava/include/sh-signal.h
new file mode 100644
index 000000000..3a96ce25f
--- /dev/null
+++ b/libjava/include/sh-signal.h
@@ -0,0 +1,75 @@
+// sh-signal.h - Catch runtime signals and turn them into exceptions
+// on a SuperH based Linux system.
+
+/* Copyright (C) 2004, 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+#include <sys/syscall.h>
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+/* The third parameter to the signal handler points to something with
+ * this structure defined in asm/ucontext.h, but the name clashes with
+ * struct ucontext from sys/ucontext.h so this private copy is used. */
+typedef struct _sig_ucontext {
+ unsigned long uc_flags;
+ struct _sig_ucontext *uc_link;
+ stack_t uc_stack;
+ struct sigcontext uc_mcontext;
+ sigset_t uc_sigmask;
+} sig_ucontext_t;
+
+#define SIGNAL_HANDLER(_name) \
+ static void _name (int , siginfo_t *, sig_ucontext_t *_uc)
+
+#define MAKE_THROW_FRAME(_exception)
+
+/* For an explanation why we cannot simply use sigaction to
+ install the handlers, see i386-signal.h. */
+
+/* We use kernel_old_sigaction here because we're calling the kernel
+ directly rather than via glibc. The sigaction structure that the
+ syscall uses is a different shape from the one in userland and not
+ visible to us in a header file so we define it here. */
+
+struct kernel_old_sigaction {
+ void (*k_sa_handler) (int, siginfo_t *, sig_ucontext_t *);
+ unsigned long k_sa_mask;
+ unsigned long k_sa_flags;
+ void (*k_sa_restorer) (void);
+};
+
+#define INIT_SEGV \
+do \
+ { \
+ struct kernel_old_sigaction kact; \
+ kact.k_sa_handler = catch_segv; \
+ kact.k_sa_mask = 0; \
+ kact.k_sa_flags = SA_SIGINFO | SA_NODEFER; \
+ syscall (SYS_sigaction, SIGSEGV, &kact, NULL); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct kernel_old_sigaction kact; \
+ kact.k_sa_handler = catch_fpe; \
+ kact.k_sa_mask = 0; \
+ kact.k_sa_flags = SA_SIGINFO | SA_NODEFER; \
+ syscall (SYS_sigaction, SIGFPE, &kact, NULL); \
+ } \
+while (0)
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/solaris-signal.h b/libjava/include/solaris-signal.h
new file mode 100644
index 000000000..a936afe06
--- /dev/null
+++ b/libjava/include/solaris-signal.h
@@ -0,0 +1,48 @@
+// sparc-signal.h - Catch runtime signals and turn them into exceptions.
+
+/* Copyright (C) 1998, 1999, 2000, 2009 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#define SIGNAL_HANDLER(_name) \
+static void _Jv_##_name (int, \
+ siginfo_t *_si __attribute__ ((__unused__)), \
+ void *_uc __attribute__ ((__unused__)))
+
+#define MAKE_THROW_FRAME(_exception)
+
+#define INIT_SEGV \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _Jv_catch_segv; \
+ act.sa_flags = SA_SIGINFO | SA_NODEFER; \
+ sigemptyset (&act.sa_mask); \
+ sigaction (SIGSEGV, &act, NULL); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct sigaction act; \
+ act.sa_sigaction = _Jv_catch_fpe; \
+ act.sa_flags = SA_SIGINFO | SA_NODEFER; \
+ sigemptyset (&act.sa_mask); \
+ sigaction (SIGFPE, &act, NULL); \
+ } \
+while (0)
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/stamp-h.in b/libjava/include/stamp-h.in
new file mode 100644
index 000000000..9788f7023
--- /dev/null
+++ b/libjava/include/stamp-h.in
@@ -0,0 +1 @@
+timestamp
diff --git a/libjava/include/win32-signal.h b/libjava/include/win32-signal.h
new file mode 100644
index 000000000..8d8a9e2d5
--- /dev/null
+++ b/libjava/include/win32-signal.h
@@ -0,0 +1,40 @@
+// win32-signal.h - Catch runtime signals and turn them into exceptions.
+
+/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+// Exception handling is done totally differently on Win32 this stuff
+// just keeps it compatible
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#define SIGNAL_HANDLER(_name) \
+static void _name (int _dummy)
+
+#define MAKE_THROW_FRAME(_exception) do {} while (0)
+#define HANDLE_DIVIDE_OVERFLOW do {} while (0)
+
+#define INIT_SEGV \
+do \
+ { \
+ } \
+while (0)
+
+
+#define INIT_FPE \
+do \
+ { \
+ } \
+while (0)
+
+
+#endif /* JAVA_SIGNAL_H */
diff --git a/libjava/include/win32-threads.h b/libjava/include/win32-threads.h
new file mode 100644
index 000000000..b8f70f5cb
--- /dev/null
+++ b/libjava/include/win32-threads.h
@@ -0,0 +1,232 @@
+// -*- c++ -*-
+// win32-threads.h - Defines for using Win32 threads.
+
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2006 Free Software
+ Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JV_WIN32_THREADS__
+#define __JV_WIN32_THREADS__
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+//
+// Typedefs.
+//
+
+typedef struct
+{
+ // ev[0] (signal) is a Win32 auto-reset event for _Jv_CondNotify
+ // ev[1] (broadcast) is a Win32 manual-reset event for _Jv_CondNotifyAll
+ HANDLE ev[2];
+
+ // Number of threads waiting on this condition variable
+ int blocked_count;
+
+ // Protects access to the blocked_count variable
+ CRITICAL_SECTION count_mutex;
+
+} _Jv_ConditionVariable_t;
+
+typedef struct
+{
+ // The thread-id of the owner thread if any, 0 otherwise
+ DWORD owner;
+
+ // Track nested mutex acquisitions by the same thread
+ int refcount;
+
+ // The actual Windows construct used to implement this mutex
+ CRITICAL_SECTION cs;
+
+} _Jv_Mutex_t;
+
+typedef struct _Jv_Thread_t
+{
+ int flags; // Flags are defined in implementation.
+ HANDLE handle; // Actual handle to the thread
+
+ // Protects access to the thread's interrupt_flag and
+ // interrupt_event variables within this module.
+ CRITICAL_SECTION interrupt_mutex;
+
+ // A Win32 auto-reset event for thread interruption
+ HANDLE interrupt_event;
+
+ java::lang::Thread *thread_obj;
+} _Jv_Thread_t;
+
+typedef DWORD _Jv_ThreadId_t;
+
+inline _Jv_ThreadId_t
+_Jv_ThreadSelf (void)
+{
+ return GetCurrentThreadId();
+}
+
+typedef void _Jv_ThreadStartFunc (java::lang::Thread *);
+
+// Type identifying a win32 thread.
+typedef HANDLE _Jv_ThreadDesc_t;
+
+inline _Jv_ThreadDesc_t
+_Jv_GetPlatformThreadID(_Jv_Thread_t *t)
+{
+ return t->handle;
+}
+
+//
+// Condition variables.
+//
+
+#define _Jv_HaveCondDestroy
+int _Jv_CondWait (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *mu, jlong millis, jint nanos);
+void _Jv_CondInit (_Jv_ConditionVariable_t *cv);
+void _Jv_CondDestroy (_Jv_ConditionVariable_t *cv);
+int _Jv_CondNotify (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *);
+int _Jv_CondNotifyAll (_Jv_ConditionVariable_t *cv, _Jv_Mutex_t *);
+
+//
+// Mutexes.
+// We use CRITICAL_SECTIONs instead of CreateMutex() for better performance
+//
+
+// Returns 0 if the mutex lock is held by the current thread, and 1 otherwise.
+inline int _Jv_MutexCheckMonitor (_Jv_Mutex_t *mu)
+{
+ return (mu->owner != GetCurrentThreadId ( ));
+}
+
+inline void _Jv_MutexInit (_Jv_Mutex_t *mu)
+{
+ mu->owner = 0UL;
+ mu->refcount = 0;
+ InitializeCriticalSection (&(mu->cs));
+}
+
+#define _Jv_HaveMutexDestroy
+inline void _Jv_MutexDestroy (_Jv_Mutex_t *mu)
+{
+ mu->owner = 0UL;
+ mu->refcount = 0;
+ DeleteCriticalSection (&(mu->cs));
+ mu = NULL;
+}
+
+inline int _Jv_MutexUnlock (_Jv_Mutex_t *mu)
+{
+ if (mu->owner == GetCurrentThreadId ( ))
+ {
+ mu->refcount--;
+ if (mu->refcount == 0)
+ mu->owner = 0UL;
+ LeaveCriticalSection (&(mu->cs));
+ return 0;
+ }
+ else
+ return 1;
+}
+
+inline int _Jv_MutexLock (_Jv_Mutex_t *mu)
+{
+ EnterCriticalSection (&(mu->cs));
+ mu->owner = GetCurrentThreadId ( );
+ mu->refcount++;
+ return 0;
+}
+
+//
+// Thread creation and manipulation.
+//
+
+void _Jv_InitThreads (void);
+_Jv_Thread_t *_Jv_ThreadInitData (java::lang::Thread *thread);
+void _Jv_ThreadDestroyData (_Jv_Thread_t *data);
+
+inline java::lang::Thread* _Jv_ThreadCurrent (void)
+{
+ extern DWORD _Jv_ThreadKey;
+ return (java::lang::Thread *) TlsGetValue(_Jv_ThreadKey);
+}
+
+inline _Jv_Thread_t *_Jv_ThreadCurrentData(void)
+{
+ extern DWORD _Jv_ThreadDataKey;
+ return (_Jv_Thread_t *) TlsGetValue(_Jv_ThreadDataKey);
+}
+
+inline void _Jv_ThreadYield (void)
+{
+ Sleep (0);
+}
+
+void _Jv_ThreadRegister (_Jv_Thread_t *data);
+void _Jv_ThreadUnRegister ();
+
+void _Jv_ThreadSetPriority (_Jv_Thread_t *data, jint prio);
+void _Jv_ThreadStart (java::lang::Thread *thread, _Jv_Thread_t *data,
+ _Jv_ThreadStartFunc *meth);
+void _Jv_ThreadWait (void);
+void _Jv_ThreadInterrupt (_Jv_Thread_t *data);
+
+//
+// Thread interruption support
+//
+
+// Gets the auto-reset event for the current thread which is
+// signalled by _Jv_ThreadInterrupt. The caller can wait on this
+// event in addition to other waitable objects.
+//
+// NOTE: After waiting on this event with WaitForMultipleObjects,
+// you should ALWAYS use the return value of WaitForMultipleObjects
+// to test whether this event was signalled and whether thread
+// interruption has occurred. You should do this instead of checking
+// the thread's interrupted_flag, because someone could have reset
+// this flag in the interval of time between the return of
+// WaitForMultipleObjects and the time you query interrupted_flag.
+// See java/lang/natWin32Process.cc (waitFor) for an example.
+HANDLE _Jv_Win32GetInterruptEvent (void);
+
+// park() / unpark() support
+
+struct ParkHelper
+{
+ // We use LONG instead of obj_addr_t to avoid pulling in locks.h,
+ // which depends on size_t, ...
+ volatile LONG permit;
+
+ // The critical section is used for lazy initialization of our event
+ CRITICAL_SECTION cs;
+ HANDLE event;
+
+ void init ();
+ void deactivate ();
+ void destroy ();
+ void park (jboolean isAbsolute, jlong time);
+ void unpark ();
+
+private:
+ void init_event();
+};
+
+// Remove defines from <windows.h> that conflict with various things in libgcj code
+
+#undef TRUE
+#undef FALSE
+#undef MAX_PRIORITY
+#undef MIN_PRIORITY
+#undef min
+#undef max
+#undef interface
+#undef STRICT
+#undef VOID
+#undef TEXT
+#undef OUT
+
+#endif /* __JV_WIN32_THREADS__ */
diff --git a/libjava/include/win32.h b/libjava/include/win32.h
new file mode 100644
index 000000000..48989fe3d
--- /dev/null
+++ b/libjava/include/win32.h
@@ -0,0 +1,188 @@
+// win32.h -- Helper functions for Microsoft-flavored OSs.
+
+/* Copyright (C) 2002, 2003, 2006 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+#ifndef __JV_WIN32_H__
+#define __JV_WIN32_H__
+
+// Enable UNICODE support?
+
+#ifdef MINGW_LIBGCJ_UNICODE
+#define UNICODE
+#define _UNICODE
+#endif // MINGW_LIBGCJ_UNICODE
+
+#include <tchar.h>
+
+// Includes
+#define WIN32_LEAN_AND_MEAN
+// Force Winsock 2 interface.
+#include <winsock2.h>
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+#undef STRICT
+
+#include <ws2tcpip.h>
+#include <gcj/cni.h>
+#include <jvm.h>
+#include <java/util/Properties.h>
+
+#include <io.h>
+
+/* Begin UNICODE Support Classes and Functions */
+
+/* Helper class which creates a temporary, null-terminated,
+ wide-character C string. */
+class _Jv_Win32TempString
+{
+public:
+ _Jv_Win32TempString(jstring jstr);
+ ~_Jv_Win32TempString();
+
+// Accessors
+ operator LPCTSTR() const
+ {
+ return buf_;
+ }
+ LPCTSTR buf() const
+ {
+ return buf_;
+ }
+ LPTSTR buf()
+ {
+ return buf_;
+ }
+
+private:
+ TCHAR stackbuf_[500];
+ LPTSTR buf_;
+};
+
+// Mimics the JV_TEMP_STRING_UTF macro in jvm.h
+#define JV_TEMP_STRING_WIN32(x,y) _Jv_Win32TempString x(y);
+
+// Creates a jstring from a LPCTSTR
+extern jstring _Jv_Win32NewString (LPCTSTR pcsz);
+
+/* End UNICODE Helpers */
+
+// Prefix and suffix for shared libraries.
+#define _Jv_platform_solib_prefix ""
+#define _Jv_platform_solib_suffix ".dll"
+
+// Name of the Process implementation.
+#define _Jv_platform_process ::java::lang::Win32Process
+
+// Separator for file name components.
+#define _Jv_platform_file_separator ((jchar) '\\')
+// Separator for path components.
+#define _Jv_platform_path_separator ((jchar) ';')
+
+// List of names for `JNI_OnLoad'. On Win32, JNI_OnLoad is an
+// "stdcall" function taking two pointers (8 bytes) as arguments. It
+// could also have been exported as "JNI_OnLoad@8" (MinGW) or
+// "_JNI_OnLoad@8" (MSVC).
+#define _Jv_platform_onload_names \
+ { "JNI_OnLoad", "JNI_OnLoad@8", "_JNI_OnLoad@8", NULL }
+
+// Type of libffi ABI used by JNICALL methods. NOTE: This must agree
+// with the JNICALL definition in jni.h
+#define _Jv_platform_ffi_abi FFI_STDCALL
+
+/* Useful helper classes and methods. */
+
+/* A C++ wrapper around a WSAEVENT which closes the event
+ in its destructor. If dwSelFlags is non-zero, we also
+ issue an WSAEventSelect on the socket descriptor with
+ the given flags; this is undone by a corresponding call
+ to WSAEventSelect(fd, 0, 0) in our destructor. */
+class WSAEventWrapper
+{
+public:
+ // Default constructor. Call init() after this.
+ WSAEventWrapper();
+ WSAEventWrapper(int fd, DWORD dwSelFlags);
+ ~WSAEventWrapper();
+
+ // Used for two-step initialization after calling
+ // default constructor.
+ void init(int fd, DWORD dwSelFlags);
+
+ int getFD()
+ {
+ return m_fd;
+ }
+
+ WSAEVENT getEventHandle()
+ {
+ return m_hEvent;
+ }
+
+private:
+ WSAEVENT m_hEvent;
+ int m_fd;
+ DWORD m_dwSelFlags;
+};
+
+// Error string text. The int argument is compatible
+// with both int WSAGetLastError() and DWORD GetLastError()
+// I tried avoiding having to pass the error explicitly, but
+// it didn't work this was invoked with say
+// throw new SomeException(_Jv_WinStrError()).
+extern jstring
+_Jv_WinStrError (LPCTSTR lpszPrologue, int nErrorCode);
+
+extern jstring
+_Jv_WinStrError (int nErrorCode);
+
+extern void
+_Jv_ThrowIOException (DWORD dwErrorCode);
+
+extern void
+_Jv_ThrowIOException ();
+
+extern void
+_Jv_ThrowSocketException (DWORD dwErrorCode);
+
+extern void
+_Jv_ThrowSocketException ();
+
+// Platform implementation
+extern void _Jv_platform_initialize (void);
+extern void _Jv_platform_initProperties (java::util::Properties*);
+extern jlong _Jv_platform_gettimeofday ();
+extern jlong _Jv_platform_nanotime ();
+extern int _Jv_pipe (int filedes[2]);
+
+extern void
+_Jv_platform_close_on_exec (HANDLE h);
+
+#ifdef JV_HASH_SYNCHRONIZATION
+/* Suspends the execution of the current thread for the specified
+ number of microseconds. Tries to emulate the behaviour of usleep()
+ on UNIX and provides a granularity of 1 millisecond. */
+inline void
+_Jv_platform_usleep (unsigned long usecs)
+{
+ if (usecs > 0UL)
+ {
+ unsigned long millis = ((usecs + 999UL) / 1000UL);
+ Sleep (millis);
+ }
+}
+#endif /* JV_HASH_SYNCHRONIZATION */
+
+// Forward declaration. See java-stack.h for definition.
+struct _Jv_AddrInfo;
+
+// Given an address, determine the executable or shared object that defines
+// it and the nearest named symbol.
+extern int _Jv_platform_dladdr (void *addr, _Jv_AddrInfo *info);
+
+#endif /* __JV_WIN32_H__ */
diff --git a/libjava/include/x86_64-signal.h b/libjava/include/x86_64-signal.h
new file mode 100644
index 000000000..4bd8a3601
--- /dev/null
+++ b/libjava/include/x86_64-signal.h
@@ -0,0 +1,181 @@
+// x86_64-signal.h - Catch runtime signals and turn them into exceptions
+// on an x86_64 based GNU/Linux system.
+
+/* Copyright (C) 2003, 2006, 2007 Free Software Foundation
+
+ This file is part of libgcj.
+
+This software is copyrighted work licensed under the terms of the
+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
+details. */
+
+
+#ifdef __x86_64__
+
+#ifndef JAVA_SIGNAL_H
+#define JAVA_SIGNAL_H 1
+
+#include <signal.h>
+#include <sys/syscall.h>
+
+#define HANDLE_SEGV 1
+#define HANDLE_FPE 1
+
+#define SIGNAL_HANDLER(_name) \
+static void _Jv_##_name (int, siginfo_t *, \
+ void *_p __attribute__ ((__unused__)))
+
+#define HANDLE_DIVIDE_OVERFLOW \
+do \
+{ \
+ struct ucontext *_uc = (struct ucontext *)_p; \
+ gregset_t &_gregs = _uc->uc_mcontext.gregs; \
+ unsigned char *_rip = (unsigned char *)_gregs[REG_RIP]; \
+ \
+ /* According to the JVM spec, "if the dividend is the negative \
+ * integer of largest possible magnitude for the type and the \
+ * divisor is -1, then overflow occurs and the result is equal to \
+ * the dividend. Despite the overflow, no exception occurs". \
+ \
+ * We handle this by inspecting the instruction which generated the \
+ * signal and advancing ip to point to the following instruction. \
+ * As the instructions are variable length it is necessary to do a \
+ * little calculation to figure out where the following instruction \
+ * actually is. \
+ \
+ */ \
+ \
+ bool _is_64_bit = false; \
+ \
+ if ((_rip[0] & 0xf0) == 0x40) /* REX byte present. */ \
+ { \
+ unsigned char _rex = _rip[0] & 0x0f; \
+ _is_64_bit = (_rex & 0x08) != 0; \
+ _rip++; \
+ } \
+ \
+ /* Detect a signed division of Integer.MIN_VALUE or Long.MIN_VALUE. */ \
+ if (_rip[0] == 0xf7) \
+ { \
+ bool _min_value_dividend = false; \
+ unsigned char _modrm = _rip[1]; \
+ \
+ if (((_modrm >> 3) & 7) == 7) \
+ { \
+ if (_is_64_bit) \
+ _min_value_dividend = \
+ _gregs[REG_RAX] == (greg_t)0x8000000000000000UL; \
+ else \
+ _min_value_dividend = \
+ (_gregs[REG_RAX] & 0xffffffff) == (greg_t)0x80000000UL; \
+ } \
+ \
+ if (_min_value_dividend) \
+ { \
+ unsigned char _rm = _modrm & 7; \
+ _gregs[REG_RDX] = 0; /* the remainder is zero */ \
+ switch (_modrm >> 6) \
+ { \
+ case 0: /* register indirect */ \
+ if (_rm == 5) /* 32-bit displacement */ \
+ _rip += 4; \
+ if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
+ _rip += 1; \
+ break; \
+ case 1: /* register indirect + 8-bit displacement */ \
+ _rip += 1; \
+ if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
+ _rip += 1; \
+ break; \
+ case 2: /* register indirect + 32-bit displacement */ \
+ _rip += 4; \
+ if (_rm == 4) /* A SIB byte follows the ModR/M byte */ \
+ _rip += 1; \
+ break; \
+ case 3: \
+ break; \
+ } \
+ _rip += 2; \
+ _gregs[REG_RIP] = (greg_t)_rip; \
+ return; \
+ } \
+ } \
+} \
+while (0)
+
+extern "C"
+{
+ struct kernel_sigaction
+ {
+ void (*k_sa_sigaction)(int,siginfo_t *,void *);
+ unsigned long k_sa_flags;
+ void (*k_sa_restorer) (void);
+ sigset_t k_sa_mask;
+ };
+}
+
+#define MAKE_THROW_FRAME(_exception)
+
+#define RESTORE(name, syscall) RESTORE2 (name, syscall)
+#define RESTORE2(name, syscall) \
+asm \
+ ( \
+ ".text\n" \
+ ".byte 0 # Yes, this really is necessary\n" \
+ ".align 16\n" \
+ "__" #name ":\n" \
+ " movq $" #syscall ", %rax\n" \
+ " syscall\n" \
+ );
+
+/* The return code for realtime-signals. */
+RESTORE (restore_rt, __NR_rt_sigreturn)
+void restore_rt (void) asm ("__restore_rt")
+ __attribute__ ((visibility ("hidden")));
+
+#define INIT_SEGV \
+do \
+ { \
+ struct kernel_sigaction act; \
+ act.k_sa_sigaction = _Jv_catch_segv; \
+ sigemptyset (&act.k_sa_mask); \
+ act.k_sa_flags = SA_SIGINFO|0x4000000; \
+ act.k_sa_restorer = restore_rt; \
+ syscall (SYS_rt_sigaction, SIGSEGV, &act, NULL, _NSIG / 8); \
+ } \
+while (0)
+
+#define INIT_FPE \
+do \
+ { \
+ struct kernel_sigaction act; \
+ act.k_sa_sigaction = _Jv_catch_fpe; \
+ sigemptyset (&act.k_sa_mask); \
+ act.k_sa_flags = SA_SIGINFO|0x4000000; \
+ act.k_sa_restorer = restore_rt; \
+ syscall (SYS_rt_sigaction, SIGFPE, &act, NULL, _NSIG / 8); \
+ } \
+while (0)
+
+/* You might wonder why we use syscall(SYS_sigaction) in INIT_FPE
+ * instead of the standard sigaction(). This is necessary because of
+ * the shenanigans above where we increment the PC saved in the
+ * context and then return. This trick will only work when we are
+ * called _directly_ by the kernel, because linuxthreads wraps signal
+ * handlers and its wrappers do not copy the sigcontext struct back
+ * when returning from a signal handler. If we return from our divide
+ * handler to a linuxthreads wrapper, we will lose the PC adjustment
+ * we made and return to the faulting instruction again. Using
+ * syscall(SYS_sigaction) causes our handler to be called directly
+ * by the kernel, bypassing any wrappers. */
+
+#endif /* JAVA_SIGNAL_H */
+
+#else /* __x86_64__ */
+
+/* This is for the 32-bit subsystem on x86-64. */
+
+#define sigcontext_struct sigcontext
+#include <java-signal-aux.h>
+
+#endif /* __x86_64__ */